perm filename MONCOM.BH[S,DOC]2 blob
sn#094744 filedate 1974-03-29 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00164 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00023 00002
C00027 00003
C00029 00004 CONTENTS i
C00033 00005 CONTENTS ii
C00035 00006 CONTENTS iii
C00037 00007 1. Introduction 1
C00041 00008 1.1 Introduction to Timesharing 2
C00046 00009 1.1 Introduction to Timesharing 3
C00051 00010 1.2 Timesharing at the AI Lab 4
C00056 00011 1.3 Introduction to Terminals 5
C00061 00012 1.3 Introduction to Terminals 6
C00065 00013 1.4 Typing Commands to the Monitor 7
C00070 00014 1.4 Typing Commands to the Monitor 8
C00074 00015 1.5 File Storage 9
C00079 00016 1.5 File Storage 10
C00083 00017 1.6 LOGIN and KJOB Commands 11
C00087 00018 1.7 Editing Commands 12
C00092 00019 1.8 Commands for Compiling and Running Programs 13
C00096 00020 1.9 Information Commands 14
C00100 00021 2. Display Terminals 15
C00104 00022 2.1 Keyboards 16
C00109 00023 2.2 The Line Editor 17
C00114 00024 2.2 The Line Editor 18
C00119 00025 2.3 Line Editor Activation 19
C00124 00026 2.4 ESCAPE and BREAK Commands 20
C00129 00027 2.4 ESCAPE and BREAK Commands 21
C00133 00028 2.5 The WHO Line 22
C00136 00029 2.5 The WHO Line 23
C00141 00030 2.5 The WHO Line 24
C00146 00031 2.6 Page Printer Control 25
C00151 00032 2.7 Data Disc Control 26
C00155 00033 2.9 Audio Switch Control 27
C00158 00034 3. Teletypes 28
C00162 00035 3. Teletypes 29
C00164 00036 4. Basic Monitor Commands 30
C00168 00037 4.1 Running Programs 31
C00172 00038 4.2 Manipulating Core Images 32
C00177 00039 4.3 Starting Programs 33
C00181 00040 4.4 Detached Jobs 34
C00185 00041 4.5 Device Control 35
C00189 00042 4.6 System Information 36
C00194 00043 4.6 System Information 37
C00198 00044 4.7 Miscellaneous Commands 38
C00203 00045 5. System Program Commands 39
C00207 00046 5.1 LOGIN 40
C00210 00047 5.1 LOGIN 41
C00215 00048 5.1 LOGIN 42
C00219 00049 5.2 LOGOUT 43
C00222 00050 5.3 RPG 44
C00225 00051 5.4 COPY and SPOOL 45
C00229 00052 5.6 DART 46
C00232 00053 5.7 DO 47
C00236 00054 5.8 ZERO 48
C00240 00055 5.9 WHO 49
C00245 00056 5.9 WHO 50
C00249 00057 5.10 FIND 51
C00252 00058 5.11 Other System Information Programs 52
C00256 00059 5.12 Miscellaneous System Programs 53
C00259 00060 6. Privileged Commands 54
C00262 00061 Appendix 1 55
C00266 00062 Appendix 1 56
C00270 00063 Appendix 1 57
C00274 00064 Appendix 1 58
C00278 00065 Appendix 1 59
C00282 00066 Appendix 1 60
C00286 00067 Appendix 1 61
C00290 00068 Appendix 1 62
C00294 00069 Appendix 1 63
C00298 00070 Appendix 1 64
C00302 00071 Appendix 1 65
C00307 00072 Appendix 1 66
C00311 00073 Appendix 1 67
C00312 00074 Appendix 1 68
C00316 00075 Appendix 1 69
C00317 00076 Appendix 1 70
C00319 00077 Appendix 2 71
C00323 00078 Appendix 2 72
C00327 00079 Appendix 2 73
C00332 00080 Appendix 2 74
C00334 00081 Appendix 2 75
C00338 00082 Appendix 2 76
C00342 00083 Appendix 2 77
C00347 00084 Appendix 2 78
C00352 00085 Appendix 2 79
C00357 00086 Appendix 2 80
C00362 00087 Appendix 2 81
C00365 00088 Appendix 2 82
C00369 00089 Appendix 2 83
C00372 00090 Appendix 2 84
C00373 00091 Appendix 3 85
C00377 00092 Appendix 3 86
C00378 00093 Appendix 3 87
C00382 00094 Appendix 3 88
C00385 00095 Appendix 3 89
C00386 00096 Appendix 3 90
C00391 00097 Appendix 3 91
C00394 00098 Appendix 4 92
C00397 00099 Appendix 4 93
C00403 00100 Appendix 4 94
C00408 00101 Appendix 4 95
C00413 00102 Appendix 4 96
C00417 00103 Appendix 4 97
C00422 00104 Appendix 4 98
C00427 00105 Appendix 4 99
C00431 00106 Appendix 4 100
C00436 00107 Appendix 4 101
C00441 00108 Appendix 4 102
C00443 00109 Appendix 5 103
C00446 00110 Appendix 5 104
C00449 00111 Appendix 5 105
C00450 00112 Appendix 6 106
C00454 00113 Appendix 6 107
C00458 00114 Appendix 6 108
C00462 00115 Appendix 6 109
C00466 00116 Appendix 6 110
C00470 00117 Appendix 6 111
C00471 00118 Appendix 7 112
C00473 00119 Appendix 8 113
C00478 00120 Appendix 8 114
C00484 00121 Appendix 8 115
C00489 00122 Appendix 8 116
C00493 00123 Appendix 8 117
C00497 00124 Appendix 8 118
C00501 00125 Appendix 8 119
C00506 00126 Appendix 8 120
C00509 00127 Appendix 8 121
C00514 00128 Appendix 8 122
C00517 00129 Appendix 8 123
C00520 00130 Appendix 8 124
C00521 00131 Appendix 9 125
C00525 00132 Appendix 9 126
C00529 00133 Appendix 9 127
C00534 00134 Appendix 9 128
C00536 00135 Appendix 9 129
C00540 00136 Appendix 9 130
C00545 00137 Appendix 9 131
C00548 00138 Appendix 10 132
C00552 00139 Appendix 11 133
C00556 00140 Appendix 11 134
C00559 00141 Appendix 11 135
C00562 00142 Appendix 11 136
C00566 00143 Appendix 11 137
C00569 00144 Appendix 11 138
C00572 00145 Appendix 11 139
C00575 00146 Appendix 11 140
C00578 00147 Appendix 11 141
C00582 00148 Appendix 11 142
C00585 00149 Appendix 11 143
C00589 00150 Appendix 11 144
C00592 00151 Appendix 11 145
C00595 00152 Appendix 11 146
C00597 00153 Appendix 12 147
C00601 00154 Appendix 12 148
C00602 00155 Appendix 13 149
C00606 00156 Appendix 13 150
C00610 00157 INDEX 151
C00615 00158 INDEX 152
C00620 00159 INDEX 153
C00625 00160 INDEX 154
C00630 00161 INDEX 155
C00635 00162 INDEX 156
C00640 00163 INDEX 157
C00645 00164 INDEX 158
C00648 ENDMK
C⊗;
STANFORD ARTIFICIAL INTELLIGENCE LABORATORY December 1973
OPERATING NOTE 54.3
M O N I T O R C O M M A N D M A N U A L
by
Brian Harvey
ABSTRACT
This document describes the monitor commands available to users of
the Stanford Artificial Intelligence Laboratory timesharing system,
and the use of the terminals connected to this system. The first
section is an introduction to the system for new users. Several
appendices are included containing documentation of commonly used
system programs. This manual supersedes SAILON 54.2 by Andy Moorer
(Monitor Manual, Chapter I). This version is intended to be listable
on a line printer or examined by any text editor. Non-Stanford users
please note, however, that this document contains nonstandard
Stanford graphic characters. Appendix 14 (Monitor Command Summary)
is not included because of obvious formatting problems. The text of
this version is otherwise identical with that of the printed version
except for page numbers and a few minor typographic changes. The
file ERRATA.BH[S,DOC] lists corrections to this manual; however, the
page numbers in that document refer to those of the printed (XGP)
version of this manual, not this version!
This work was supported by the Advanced Research Projects Agency of
the Office of the Secretary of Defense under contract
DAHC15-73-C-0435.
ACKNOWLEDGMENTS
Several sections of this document were excerpted from program
documentation written by others. Contributors include Ralph Gorin
(RPG, SPOOL, DART), Dick Helliwell (COPY, DO, ZERO), Andy Moorer
(TELNET), Dan Swinehart (FTP), Larry Tesler (FIND), Jim Stein (RSL),
and Bo Eross (FIXIML). John McCarthy wrote the Introduction to
Timesharing section. Martin Frost and Fred Wright provided
invaluable technical assistance in publishing the manual, and Ralph
Gorin, Brian McCune, and Fred Wright edited and corrected the draft
versions. This document was produced using the PUB program written
by Larry Tesler and improved by Rich Johnsson and Tovar.
CONTENTS i
T A B L E O F C O N T E N T S
SECTION PAGE
1 INTRODUCTION FOR NEW USERS 1
1.1 Introduction to Timesharing . . . . . . 1
1.2 Timesharing at the AI Lab . . . . . . . 3
1.3 Introduction to Terminals . . . . . . . 5
1.4 Typing Commands to the Monitor . . . . . 7
1.5 File Storage . . . . . . . . . . . 8
1.6 LOGIN and KJOB Commands . . . . . . . . 10
1.7 Editing Commands . . . . . . . . . . 11
1.8 Commands for Compiling and Running Programs . 12
1.9 Information Commands . . . . . . . . . 13
1.10 Programs and Core Images . . . . . . . 14
2 DISPLAY TERMINALS 15
2.1 Keyboards . . . . . . . . . . . . 15
2.2 The Line Editor . . . . . . . . . . 16
2.3 Line Editor Activation . . . . . . . . 18
2.4 ESCAPE and BREAK Commands . . . . . . . 20
2.5 The WHO Line . . . . . . . . . . . 21
2.6 Page Printer Control . . . . . . . . . 24
2.7 Data Disc Control . . . . . . . . . . 25
2.8 III Control . . . . . . . . . . . . 26
2.9 Audio Switch Control . . . . . . . . . 27
3 TELETYPES 28
4 BASIC MONITOR COMMANDS 30
4.1 Running Programs . . . . . . . . . . 30
4.2 Manipulating Core Images . . . . . . . 31
4.3 Starting Programs . . . . . . . . . . 32
4.4 Detached Jobs . . . . . . . . . . . 33
4.5 Device Control . . . . . . . . . . . 34
4.6 System Information . . . . . . . . . 35
4.7 Miscellaneous Commands . . . . . . . . 37
CONTENTS ii
5 SYSTEM PROGRAM COMMANDS 39
5.1 LOGIN . . . . . . . . . . . . . . 39
5.2 LOGOUT . . . . . . . . . . . . . 42
5.3 RPG . . . . . . . . . . . . . . 43
5.4 COPY and SPOOL . . . . . . . . . . . 44
5.5 MAIL . . . . . . . . . . . . . . 45
5.6 DART . . . . . . . . . . . . . . 46
5.7 DO . . . . . . . . . . . . . . . 46
5.8 ZERO . . . . . . . . . . . . . . 47
5.9 WHO . . . . . . . . . . . . . . 48
5.10 FIND . . . . . . . . . . . . . . 50
5.11 Other System Information Programs . . . . 52
5.12 Miscellaneous System Programs . . . . . . 52
6 PRIVILEGED COMMANDS 54
CONTENTS iii
A P P E N D I C E S
1 RPG 55
2 COPY 71
3 SPOOL 85
4 MAIL 92
5 DART 103
6 SERVICE LEVEL SYSTEM (RSL) 106
7 FIXIMLAC 112
8 ARPA NETWORK 113
9 CARE AND FEEDING OF DEVICES 125
10 RELOADING THE SYSTEM 132
11 MONITOR ERROR MESSAGES 133
12 BIBLIOGRAPHY 147
13 STANFORD CHARACTER SET 149
1. Introduction 1
SECTION 1
INTRODUCTION FOR NEW USERS
This manual describes the monitor commands used in the PDP-10
computer system at the Stanford Artificial Intelligence Laboratory.
The first section is an introduction for new users, including brief
explanations of terminals, file storage, and some of the essential
monitor commands. The computer is operated exclusively as a
timesharing system, and the section begins with an introduction to
timesharing.
1.1 Introduction to Timesharing
A timesharing computer system includes the computer itself (in our
case a PDP-10 computer made by the Digital Equipment Corporation),
user terminals for input to and output from the computer (in our case
about 60 keyboard and display terminals), and a file system that
keeps programs, data for the programs, reports, and other data for
the users.
The basic idea of timesharing is to allow each user to behave as
though he had a computer to himself controlled from his terminal.
This is accomplished by having the computer cycle its attention among
the users wanting service in rotation. It does this fast enough so
that small requests are serviced in a time that ranges from a small
fraction of a second to a few seconds, depending on the number of
people demanding service at that instant. If the desired computation
is long, the computer will do a bit of it, then service other people,
then return to it, and so on until the computation is done. The time
taken will depend on the size of the computation and how busy the
machine is.
At any time the user's terminal is interacting with some program.
These programs include the timesharing monitor; editors used to
prepare programs, documents, reports and other data; various utility
programs; and the user's own programs.
When you first sit down at a terminal, you will be interacting with
the monitor, and you can always get back to the monitor by pressing
the CALL key on the terminal. The first thing you have to do is to
log in, which tells the monitor who you are so it can connect you to
the file directory that contains your files and can do its
1.1 Introduction to Timesharing 2
accounting. The last thing you do is log out so that the terminal
and other resources you have been occupying can be used by someone
else.
You will have a certain quota of disk space and will be able to keep
files such as programs between uses of the computer. Therefore, you
will not ordinarily need any external form of storage such as punched
cards or magnetic tape. (Our computer doesn't even have punched card
equipment.)
A user gets service from programs by typing commands to the monitor.
Some monitor commands perform the service and leave you again talking
to the monitor. Others cause a program to be started; thereafter,
you have to interact with that program in the way prescribed by it.
When you are done with it, you go back to the monitor.
Your program also gets service from the monitor by means of special
instructions, called UUOs, used in the program. The monitor provides
many different services as a sort of subroutine of your program; most
importantly, it is responsible for allocating resources, like core
storage and input/output devices, among different jobs. Therefore,
input and output must be done through the monitor to avoid conflicts.
These UUOs are documented in their own manual; this one is about the
commands you type at your terminal.
A typical task is to write a program in some computer language such
as SAIL (our dialect of ALGOL) or LISP and then debug the program by
running it, checking the results, and changing it until it gives the
right answers. This is accomplished in the following steps:
1. First you run an editor. (We have several, but the current
favorite is called E.) The editor reads whatever you type and
displays it; what you type becomes the text of the program you are
writing. However, the editor gives you convenient facilities for
going back in your text and making changes that you think of as you
go along. Most people don't write their programs on paper, but make
them up as they use the editor. When the program is ready to try,
you exit from the editor back to the monitor, and your program is a
file on the disk with a name you have given it. At any time, you can
re-edit this file to make changes in it. You can also print it on
the line printer to take a copy home, and when you don't need it any
more you can delete it.
2. Normally, the next step is to call a compiler to translate the
program from a source language into machine language, call the loader
to load it into your core image, and finally ask the computer to run
it. You can do these things as separate operations, but facilities
are provided for initiating all of this with a single command.
1.1 Introduction to Timesharing 3
3. When the computer runs your program, it may just produce answers
and stop. If you like the answers, perhaps you are done. Otherwise,
you go back to the editor to make changes in the source file and try
again. On the other hand, you may have written an interactive
program which expects you to type input on the terminal. It
interprets your input and gives output, then asks for more input,
etc. Your program may read files and write them. It may display
pictures on your terminal. Also, it may interact with the physical
world by reading pictures from one of the TV cameras attached to the
computer and by waving the mechanical arm.
4. In order to debug a program, you may have to do more than just
look at the output. Therefore, the timesharing system has facilities
for examining and changing the contents of registers and for putting
break-points in programs.
1.2 Timesharing at the AI Lab
Our timesharing system runs on a Digital Equipment Corporation (DEC)
PDP-10 computer. This is a 36-bit machine designed for timesharing
applications, with 262,000 words of core storage. Our timesharing
system, derived from old DEC software, has been extensively modified
for our special requirements.
Programming languages available here include SAIL, a version of ALGOL
with added features for backtracking, list processing, associative
processing, and coroutining; several versions of LISP; FAIL, our
PDP-10 assembly language; and the MICRO-PLANNER problem solving
language.
To use the computer, you must type a LOGIN command at your terminal.
(See Section 1.6 for a description of this command.) The monitor
assigns you a job number, which it uses internally to keep track of
you. Associated with your job are various resources, of which the
most important is the core image, i.e., the simulated core storage
maintained for you by the monitor so that your program can use
addresses starting from zero although it may really be located
anywhere in core while running. Your job only has one core image; if
you type a monitor command which causes a program to be run, that
program replaces your old core image. There is no way for one job to
run two programs at once.
As a user of the Stanford AI Lab system, you will be given a
programmer name to identify you to the computer. The main reason for
this is so that the monitor knows which files on the disk storage
belong to you. This name will probably be your initials. When you
1.2 Timesharing at the AI Lab 4
log in, you must type in this name, along with a project name which
may identify what project you are working on. For example, if you
are doing homework for a Computer Science course, the course number
might be your project name. The combination is called a
project-programmer name or PPN and is typed PRJ,PRG or sometimes
[PRJ,PRG] when used in a file specification. Project "1" is a
popular name with no special meaning.
Ours is just about the most heavily used computer we know of. It's
hard to get good service, especially weekday afternoons. Therefore,
please be careful about leaving jobs logged in when you leave, and
don't play Spacewar during the day! Even a job which is not running
uses up scarce resources.
Sometimes the system stops working while you are using it. You will
notice that characters you type no longer appear on your terminal.
In many cases, the system fixes itself after a few seconds, so all
that happens is that a few characters you typed are lost. Otherwise,
someone has to go fix it manually. Sometimes they can get it working
again so that you can just continue with what you were doing. Other
times, they have to load a new copy of the system, and you have to
start over again. This is called reloading. If this happens, you
will see a message to that effect on your terminal. (It is a good
idea, when editing a long file, to save it on the disk every so often
in case of a system crash.) If the system crashes and nobody is
around to fix it, you may have to reload it yourself. See Appendix
10 to find out how.
Sometimes the system is stopped intentionally for software or
hardware maintenance. This downtime is scheduled in advance, and
part of the system messages you see when you log in is a maintenance
schedule. Some time before the system is taken down for scheduled
maintenance, you will see a warning on your terminal which counts
down to the end. This warns you to save any files you are writing
and stop what you are doing. Such maintenance is often scheduled
between 5 and 7 weekday evenings.
This document, the Monitor Command Manual, describes the use of
monitor commands typed in at terminals. Another manual describes the
UUOs, instructions used by programs to communicate with the monitor.
Other system information, including documentation of specific system
programs, can be found in some printed manuals and on the disk; look
at the [S,DOC] and [UP,DOC] file directories for program
documentation. Some system programs, which are invoked by special
monitor commands, are written up in appendices to this manual. Most
of these appendices are derived from [UP,DOC] files; the latter are
updated more frequently than this manual and should be considered the
primary reference for those programs.
1.3 Introduction to Terminals 5
1.3 Introduction to Terminals
Most terminals on this system are display terminals; the characters
you type appear on a display screen. There are also a few Teletypes,
which use paper, and do not have the full character set of our
displays. Teletypes are rarely used here, although there are a few
on campus connected to our system.
There are two kinds of display terminals in use at the lab, Data
Discs and IIIs ("triple-I"). They use the same keyboards, but have
different display screens. The Data Discs, which are more numerous
(about 60 of them), use TV monitors. (The name Data Disc actually
refers not to the terminals themselves, but to the machine in the
computer room which controls them.) The six IIIs are vector plotting
displays, used mainly for graphics display programs like Spacewar.
Unless you are writing a display program, the difference is not too
important except that the character set on the IIIs is less legible
than that on the Data Discs.
A vacant terminal should say TAKE ME, I'M YOURS on an otherwise blank
screen. If it's completely blank, make sure it's turned on, and that
the brightness and contrast (intensity on IIIs) are turned up. If it
says NO DATA DISK CHANNELS LEFT, it means that the Data Disc, which
can run only 31 terminals at once, is full. A free terminal is
called available because the message used to say THIS CONSOLE
AVAILABLE until Dick got to it.
Each of the printing character keys on our terminals has two
characters printed on it (except the 0 key). The bottom one is
usually a letter or digit, and the top one is some special character.
There are two SHIFT keys and a SHIFT LOCK key, which make letters
upper case. The keys which produce the special characters are
labelled TOP. For example, hitting the "<D" key alone produces lower
case "d"; also holding down SHIFT produces capital "D"; and holding
down the TOP key makes it produce "<" (SHIFT and TOP together is
interpreted as TOP).
When you type something on an available terminal, the available
message is replaced by whatever you typed. The characters you type
are kept in a special buffer called your line editor until you
activate them by typing RETURN or a few other special characters.
The line editor allows you to change the contents of the line by
using special editing command characters. The characters in the line
editor are displayed on the screen with two cursors: underlines on
Data Discs and triangles on IIIs. The left cursor is underneath the
first character in the line editor; the right cursor is under the
place where the next character you type will go (generally the end of
the line). When your line editor is empty, the cursors coincide.
1.3 Introduction to Terminals 6
The line editor commands are explained in Section 2.2. Note: when
you type RETURN, the monitor generally supplies a LINE character
automatically. RETURN signifies a return to the left margin, and
LINE an advance to the next line.
To get you started using display terminals before you read about all
the line editor commands, all you need to remember is that the BS key
will delete the last character, and the CLEAR key will delete the
entire line. The CONTROL and META keys are used for other line
editor functions.
When you are done with a terminal, be sure to log it out. Also,
don't leave anything in the line editor--type RETURN before you leave
if you're not sure. Your Data Disc channel will be made available
soon after you log out, but not if there is anything in the line
editor.
A note on terminology: In the body of this manual, characters are
referred to by the name printed on the keyboard, e.g., RETURN and
FORM. In other documentation, including some of the appendices to
this manual, different notations are used. Some of these are shown
here:
function key other notation
break BREAK <BRK> [BRK]
escape ESC <ESC> [ESC] <ESCAPE>
call CALL <CALL> [CALL] ↑C
clear CLEAR [CLEAR] ↑U
tab TAB <TAB> [TAB] <HT>
form feed FORM <FORM> [FORM] <FF>
vertical tab VT <VT>
backspace BS <BS> [BS]
carriage return RETURN [RETURN] <CR> CR
line feed LINE <LF> LF <LINEFEED>
shift SHIFT <SHIFT>
top TOP <TOP>
alt mode ALT <ALT> <ALTMODE> $
meta META <META> β
control CONTROL <CONTROL> <CTRL> α
The combination of RETURN and LINE (remember that LINE is supplied by
the monitor) is sometimes referred to as CRLF.
1.4 Typing Commands to the Monitor 7
1.4 Typing Commands to the Monitor
What you type may be read by different programs at different times,
so you should be aware of what program you're talking to. When you
first type on a vacant terminal, you are talking to the monitor's
command decoder. You continue to talk to the monitor until you start
running a program; then you're generally talking to that program. To
distinguish these, the state of the terminal is described as monitor
mode or user mode. When the monitor is ready to read a command from
your terminal, it types a period. System programs which you run,
like compilers and editors, generally type an asterisk when they are
ready for a command.
It is possible to type ahead when the system is not waiting for
typein. Characters you type which are not immediately read by either
the monitor or a program are stored in your terminal's input buffer
until they are needed. Programs can cause this buffer to be cleared.
For example, some programs ask for confirmation of certain commands,
e.g., when you specify for output a filename which already exists.
Some such programs clear your input buffer first and others don't, so
you can get confused by typing ahead to a program whose behavior you
don't expect. Your input buffer is also cleared when you type CALL.
Monitor commands consist of the command name, possibly followed by
arguments separated by spaces or punctuation, and then a RETURN. The
command may be typed using upper and lower case letters
interchangeably. Monitor command names may be typed in completely,
or they may be abbreviated to only as many letters as are necessary
to make the name unique; for example, the LOAD command may be
abbreviated LOA, but not LO because there is also a LOGIN command. A
few common commands have single-letter abbreviations (L is accepted
to mean LOGIN). Only the first six letters of a command name are
relevant.
Some monitor commands are completely processed by the monitor,
without running a program in your core image. For example, the
DAYTIME command types the current date and time, without disturbing
your core image. Most commands, however, require a program to be
run. The monitor usually requires you to log in before you may run
programs; there are a few exceptions, to permit system information
programs like WHO, and of course the LOGIN program itself. If, when
not logged in, you try to run a program which requires you to be
logged in, the monitor automatically runs LOGIN, which will ask you
for your project-programmer name. In this situation, when LOGIN
finishes running, it will re-enter the command which you typed in the
first place, so the command will be performed without making you
retype it. Commands which require login but which refer to a
pre-existing core image rather than starting a new program (e.g.,
START) do not cause this automatic login, but give an error message.
1.4 Typing Commands to the Monitor 8
When you first enter a command which runs a program, the system
assigns you a job number and types a line like
JOB 19 Stanford 6.13/F 8-15-73
which tells you what version of the monitor is running and when it
was created, as well as your job number. (If it types
JOB CAPACITY EXCEEDED
too many jobs are already logged in.) When a program like WHO is run
without logging in, the job is killed when the program exits. The
LOGIN program, however, leaves you logged in when it exits.
Some of the monitor commands are briefly described starting in
Section 1.6. The full descriptions of all the commands are in
Sections 4 and 5, and in the appendices.
1.5 File Storage
A file is a stored collection of information, perhaps a program or
data. Most files are stored on a permanently available disk unit.
Files on the disk must be identified by name and by owner so that you
can get at the one you want. Files on other devices may also be
used; we have magnetic tape, DECtape (a small mag tape unit unique to
Digital Equipment Corp. machines), and paper tape, as well as a line
printer and stuff like that. Whenever a program does input or
output, it has to specify the particular file it wants. A file
identifier is typed in the form
DEV:FILNAM.EXT[PRJ,PRG]
(some parts of that can be left out). DEV specifies the device you
want. Generally, if you want the disk (DSK), you may leave it out.
Device names may include a number to specify a particular unit; thus,
TTY is your own terminal (all terminals used to be Teletypes, and the
name stuck), but TTY26 is the one next to the computer console.
Besides these physical device names, you can define logical device
names to use in your program. The monitor command ASSIGN is used to
make your logical name refer to some particular physical device. If
you leave out the device name, leave out the colon too.
Some devices, like the disk, require the use of filenames, and some,
like the line printer, don't. If you specify a filename for a device
which doesn't use one, the name is ignored. Devices which require
file names are called directory devices because they include special
1.5 File Storage 9
files called directories which tell where the other files are. Files
are specified by a filename, another name called the extension, and,
on the disk, a PPN specifying the file's owner. Letters in the
filename are upper case, although most programs will accept lower
case letters. The filename is one to six letters or digits, and can
say anything you want to identify the file. The extension, which is
optional, is one to three characters. The only directory devices in
this system are the disk and DECtapes.
The extension of a file is generally one of a standard set used to
indicate what sort of file it is, like SAI for a SAIL program, REL
for a relocatable binary program as produced by a compiler, or DMP
for a dumped core image. Many programs use these standard extensions
as defaults, so you often can type the file name alone.
Disk files require a project-programmer name, which selects the
directory to use for the file (see page 3). If you do not type in a
PPN, you generally get the one you gave to LOGIN. The disk directory
for each user is called a UFD (User File Directory); people also
speak of a disk area, although there is not really a physical area
involved.
Files are divided into smaller units, called records. The precise
meaning of a record depends on the particular device you are using,
but often a record is the smallest unit of data which the device will
transfer to or from the computer at a time. For example, files on
the disk are divided into 200-word (octal) records. The disk
hardware reads or writes one such record at a time. On magnetic
tape, you can write any size records; however, when you read the
tape, each record must be read all at once. The monitor provides
buffering so that your program can deal with the data a character or
a word at a time. The monitor gets a record and stores it for you.
The following devices are available on this system.
DSK the public disk
SYS same as DSK, but implies PPN [1,3] (system files)
UDP0 user disk pack, a disk unit for private disk packs
MTA0,1 magnetic tape drives
DTA1-4 DECtape drives
LPT line printer
XGP Xerox Graphics Printer
PTR paper tape reader
PTP paper tape punch; also connected to CALCOMP plotter
AD analog-to-digital and digital-to-analog converter
TV TV cameras
TTYn terminals and pseudo-teletypes (see below)
TTY the user's own terminal
CTY PDP-10 console Teletype
1.5 File Storage 10
A pseudo-teletype (PTY) is a simulated device used to allow programs
to "type" monitor commands. The program uses special UUOs to output
text to the PTY, which is then seen by the monitor as if it were
typed at another terminal, with its own TTY number. Similarly, text
typed out to the PTY can be read by the controlling program. One
user of PTYs is the program which allows people at other computers to
use our system via the ARPA network (Appendix 8).
Disk files are copied to magnetic tape periodically, using the DART
program (see Appendix 5). Monitor commands which run DART can be
used to retrieve files which have been clobbered by system failure
(uncommon) or user error.
1.6 LOGIN and KJOB Commands
In this and the following sections, a few of the monitor commands
used in creating and debugging a program are described briefly. More
complete descriptions come later and in other manuals.
The first thing you have to do is log in. The command for this is
called LOGIN, abbreviated L. Your project-programmer name is its
argument. (See page 3 for an explanation of project-programmer
names.) If you are a Student Research Assistant named Richard M.
Nixon, you might type
L 1/RMN
(The slash means that you don't want to see any system messages which
you've seen before. You could have used a comma to see all messages
or a dot to see none at all.) The monitor processes this command by
assigning and typing out a job number, and then starting the LOGIN
program in your core image.
If this is the first time you're logging in, LOGIN will type out
ARE YOU SURE?
to which you must type a Y. It will tell you that you are not known
as an authorized user of the system, unless your initials have been
added to the authorized users list. Then you get the messages, and
the program exits. You are now logged in. Section 5.1 explains
the LOGIN command more fully.
When you finish doing whatever you want, you should log out. The
command for this is called KJOB, abbreviated K. No arguments are
required, just K and RETURN. (As with all monitor commands, you must
1.6 LOGIN and KJOB Commands 11
be in monitor mode before entering the command.) This command runs
the LOGOUT program, which types out how much computer time you used,
etc., and kills your job. Your terminal will become available in a
few seconds if you don't type anything else. If there are no files
in your directory, the LOGOUT program deletes the directory. Section
5.2 gives more complete documentation of the logout procedure.
1.7 Editing Commands
To enter your program, or to correct it, you will use one of our text
editors. There are four editors in common use here:
1. E. This is the one you'll generally use. It is a display
editor, much like TV (below) but much faster and with slightly
different features.
2. TV. This is an earlier version of our display editor. It has
been pretty much replaced by E, but there are still a few things TV
can do which E can't, like switching between files in the middle of
an edit.
3. SOS. This editor is designed for use at Teletypes or other
non-display terminals. Files created with SOS include a line number
at the beginning of every line. Editing commands use the line
numbers to specify what lines to change, delete, or whatever.
Hopefully you will have no need to use this editor, since you'll be
using display terminals.
4. TECO. This editor is supplied by DEC. It is extremely powerful,
in that it allows you to write editing programs which can process a
file systematically, and it is very flexible about strange characters
in the file. However, for routine editing it is somewhat
inconvenient to use because it has an obscure command notation and
does not use the display facility of the terminals.
Each of these editors is described in its own manual. A bibliography
is included as an appendix to this manual. The point to be explained
here is how to use monitor commands to invoke an editor; we'll assume
here that you're using TV.
Suppose you want to write a program called PROG in the SAIL
programming language. The monitor command to create a new file with
TV is CTV. So you would type
CTV PROG.SAI
1.7 Editing Commands 12
(SAI is the standard extension for SAIL programs.) This command
tells the monitor to run the RPG (Rapid Program Generator) program, a
command interpreter which abbreviates the sequence of commands needed
to edit, compile, load, and debug programs. RPG reads the CTV
command, which tells it to run TV, telling TV to create a new file
named PROG.SAI. RPG remembers the last editing command you typed, so
later you'll be able to edit the file simply by entering a TV command
without having to type the file name again. (Note--LOGOUT makes RPG
"forget" your commands, so you have to type the file name again when
you next log in.)
The command for editing an already existing file with TV is TV. You
can enter this command with no argument and it will remember the file
from the last edit command, or you can specify a filename as with the
CTV command above.
The E editor, which is the most commonly used here, includes
provisions within it for carrying out the RPG functions itself.
Therefore, the CETV and ETV commands analogous to CTV and TV do not
run RPG; they start E directly. However, these commands are included
with the RPG commands in this manual because they act the same to the
user.
There is a file you can edit to learn how to use E. To do this, log
in and enter the following command:
ET TEACH←TEACH[UP,DOC](2P)
Then just read what appears on your screen and follow instructions.
1.8 Commands for Compiling and Running Programs
Once you have typed in your program, you have to compile it, load it,
and run it. Compilers like SAIL put out relocatable binary programs.
This means that the program is in a form which contains enough
information so that it can be loaded into any address in core.
Addresses within the program are all considered relative to the
program's first word, so the LOADER has to add the actual address of
that word to all the relative addresses in the program. Your program
can be loaded along with others, for example a debugging program; the
actual location of any program in your core image will depend on what
other programs are loaded with it. (Note that this relocatable
binary program format has nothing to do with the hardware relocation
discussed on page 3.) The core image produced by the LOADER can be
saved in a DMP (dump) file, which can then be run directly by a
monitor command without going through the LOADER again.
1.8 Commands for Compiling and Running Programs 13
Suppose you have typed in your program, PROG.SAI. You want to
compile, load, and run it. You could say
EXECUTE PROG
and all those things would happen automatically. RPG would generate
a command file for SAIL telling it to compile PROG.SAI and start up
the loader, which also gets a command file. (RPG knows that it
should use the SAIL compiler because of the SAI extension in your
filename.) Again, RPG remembers the command, so next time you just
have to say EXECUTE and it'll all happen. In fact, the editors all
have commands which automatically re-do the last compile-type RPG
command.
Suppose, to make this clearer, you find a bug in the program. To fix
it, you can say
ETV
and RPG will start E editing PROG.SAI.
Then you use E commands to edit the file. When you're done, you use
the exit-to-RPG command, which in E is CONTROL-X GO. This will
automatically repeat the EXECUTE command you typed before.
There are many different versions of this compilation command:
COMPILE will just compile the program, LOAD will compile and load,
etc. The RPG commands are listed in Section 5.3 and fully
described in Appendix 1.
1.9 Information Commands
You can sometimes find out how to use a system command by typing HELP
followed by the command name. Typing HELP with no argument will list
the kinds of help available this way. For instance, if you forget
how to log in, you can type HELP LOGIN.
You can see the status of all the jobs on the system with the WHO
command, abbreviated W. You can find out about jobs belonging to a
particular user by typing WHERE prg (prg is the programmer name) or
FINGER prg. These type out information about the given user's jobs;
try them to find out more. All of these (HELP, WHO, WHERE, and
FINGER) run programs in your core image, so you shouldn't run them if
you need the program you have there. These information commands can
be run without logging in first.
1.9 Information Commands 14
To get a list of the files in your directory, type the DIRECTORY
command. You can get the list for another disk area by including a
PPN in square brackets as an argument. You must be logged in to give
this command.
1.10 Programs and Core Images
This section discusses the allocation and use of core storage for a
job. The PDP-10 storage is divided into blocks of 1024 words, called
1K. Each job's core image is a multiple of 1K long. The core image
may be located in any contiguous set of actual core blocks while the
program is running.
Actually, a job may use two distinct contiguous sets of core blocks,
called the lower and upper segments. The job must have a lower
segment in order to run. This segment belongs to that job alone. If
the job has an upper segment, it may be shared with other jobs. One
use of this is to allow several users to run the same system program
with only one copy of the program in core; the data for the
individual users is stored in each job's lower segment, and the
common code is in the upper segment.
An upper segment may be write protected, so the program in it cannot
be accidentally changed. This is usually done with shared upper
segments. Programs can control the write protection of their upper
segment by UUO. Upper segments are more fully explained in the UUO
Manual.
Each upper segment has an entry in the system job table, including a
job number, a segment name, and much of the status information
associated with jobs. Some of the monitor commands described in
later sections of this manual refer to upper segments.
The lowest locations in each job's core image, called the Job Data
Area, are used by the monitor to store information about the job.
Some of this information is of interest only to the monitor, while
other parts can be used and modified by the job itself. In
particular, some monitor commands use information from Job Data Area
words, e.g., starting addresses for the program. The description of
such commands will refer to the relevant word by its symbolic name,
of the form JOBxxx, e.g., JOBSA is the word containing the program's
normal start address. The complete description of the Job Data Area
is contained in the UUO Manual.
2. Display Terminals 15
SECTION 2
DISPLAY TERMINALS
2.1 Keyboards
Our display terminals use a character set called Stanford ASCII.
ASCII is a standard computer character set; our version is similar to
the standard but somewhat extended. In particular, the "control"
codes in ASCII, which mean things like "end of text," are used here
for printing characters like α and ∃ and ∩. There are seven bits in
a character code; since the PDP-10 has 36-bit words, five characters
fit in a word with one bit left over. The complete Stanford ASCII
character set is listed in Appendix 13.
Each of the printing character keys on our terminals has two
characters printed on it (except the 0 key). The bottom one is
usually a letter or digit, and the top one is some special character.
There are two SHIFT keys and a SHIFT LOCK key, which make letters
upper case. The keys which produce the special characters are
labelled TOP. For example, hitting the "<D" key alone produces lower
case "d"; also holding down SHIFT produces capital "D"; and holding
down the TOP key with it produces "<" (SHIFT and TOP together is
interpreted as TOP).
There are several special character codes, generally not printing
characters, which are not affected by SHIFT and TOP. One is the
space bar, which spaces as on any typewriter. The TAB key sends a
tab code, which prints by spacing out to the next tab stop; these are
set eight spaces apart and cannot be changed. The RETURN key sends a
carriage return code, and the monitor generally provides a line feed
code after it automatically. The LINE key sends a line feed alone;
this is not too often useful. The FORM key sends a form feed code,
and the VT key a vertical tab. These two are used by some programs
as control codes, but not often for their printing effect. The BS key
is backspace (in real ASCII this code is called delete). This code
is usually not sent to your program, but is taken by the line editor
as a command to back up the cursor. The ALT key sends an alt mode;
this code has no printing significance, but is used as a control code
by programs.
Although ASCII is a seven-bit code, display terminals actually send
nine-bit codes to programs. The two extra bits represent the CONTROL
2.1 Keyboards 16
and META keys. These keys are like SHIFT and TOP in that they are
held down along with some other key. They have two different
functions; when the character they are used with is sent to a
program, it can be used as a control command. Editing and debugging
programs use such single-character commands heavily. For example, in
the E editor, CONTROL-META-D means to delete a line. However, the
CONTROL and META keys are also used as commands to the system line
editor for inserting characters inside a line, etc. The use of the
line editor is explained in Section 2.2.
There are four more keys to be described. They are unusual in that
none of them send characters to your program or to the monitor's
command decoder; they are processed by the monitor's keyboard scanner
and the line editor. CLEAR is simply a line editor command to delete
the entire line in the line editor. CALL is used to interrupt a
program running in your core image and return your terminal to
monitor mode. ESC (escape) and BREAK are used to signal that the
characters which follow are a special command to the display service
routines in the monitor; the many different functions of these
commands will be explained in Section 2.4 and following sections.
There should be a list of the ESC and BREAK commands attached to your
keyboard; if not, see page 20 to find out how to print one.
2.2 The Line Editor
At a display, the characters you type are accumulated by a part of
the monitor called the line editor. When you end a line by typing an
activation character, the entire line is sent to your program (or to
the monitor command decoder). Generally you will activate a line
with the RETURN key, although others also work. The exact workings
of activation are discussed in Section 2.3, but first, there are
several editing command characters which can be used to change the
text in the line editor.
There are two line editor cursors displayed on your screen. The left
cursor is underneath the first character in the line editor; the
right cursor is under the character position you are about to write
into. The cursors are underlines on Data Discs, and triangles on
IIIs. Also, on IIIs, the characters in the line editor are displayed
somewhat below any other characters on the same line. If there is no
text in the line editor, the two cursors coincide.
When you type a printing character into the line editor, it is
displayed at the right cursor position, replacing any other character
which was there before. The CONTROL and META keys are used to change
the function of characters typed in. Also, several characters have
2.2 The Line Editor 17
different functions depending on whether or not they are typed with
the right cursor at the end of the line. For example, BS at the end
of the line deletes the last character; inside the line, it moves the
cursor left one position without deleting anything.
META along with a printing character (including space and tab)
inserts that character at the cursor position, in front of the
character already there, rather than replacing the old character. At
the end of the line, a META character will activate.
BS at the end of the line deletes the last character. If it's not at
the end, BS just backs up the cursor without deleting. People talk
about deleting backspace and non-deleting backspace to distinguish
these. CONTROL-BS is always non-deleting, and META-BS is always
deleting. (CONTROL-META-BS, like CONTROL-META-anything, is not a
line editor command but an activation character.)
CONTROL-SPACE is the opposite of CONTROL-BS: it moves the cursor
forward without changing the text. SPACE alone and META-SPACE act
like any printing character. At the end of the line, CONTROL-SPACE
does nothing (it neither moves the cursor nor activates).
The remaining editing commands consist of CONTROL-something. Some of
them are only considered as line editor commands inside a line; at
the end of the line, they activate. Whether or not this is true for
a particular command will be mentioned in each description.
CONTROL-TAB moves the cursor to the end of the line, as if you typed
CONTROL-SPACE many times. (Inside the line only.)
CONTROL-FORM is the opposite: it moves the cursor to the beginning of
the line, so the two cursors coincide. (Inside or end of the line is
ok for this one.)
CONTROL-D deletes the character above the right cursor. (Inside
only.) Note that this is different from META-BS, which deletes the
character to the left of the cursor.
CONTROL-S skips ahead from the current position of the right cursor
to the next occurrence of the character you type next. If the next
character you type does not occur to the right of the cursor, nothing
happens. If the search character is a letter, the case must match.
(Inside only.)
CONTROL-K is like CONTROL-S but instead of moving the cursor it kills
characters up to (not including) the one you select. Again, nothing
happens if the character does not occur. (Inside only.)
CONTROL-I enters insert mode. In this mode, all characters are
2.2 The Line Editor 18
treated as if you were holding down the META key, until you leave
insert mode by typing another CONTROL command or activation
character. That is, characters which you type are inserted instead
of overwriting old ones, and BS is a deleting backspace. (Inside
only.)
CONTROL-number (that is, any decimal number typed while holding down
the CONTROL key) will cause a CONTROL command immediately following
to be repeated that many times. For example, CONTROL-5 CONTROL-BS
will move the cursor left five positions. This can be used to repeat
the BS command as well as CONTROL-BS, META-BS, CONTROL-SPACE,
CONTROL-D, CONTROL-S (finds the nth occurrence), and CONTROL-K.
CLEAR will delete everything in the line editor.
CONTROL-RETURN will retrieve the last line which was edited, as long
as you haven't typed anything since then. That is, after you
activate a line, if the very next character you type is
CONTROL-RETURN, the line is returned to the line editor. You can
send the same line again by just typing RETURN, or you can edit it.
This is very handy when a monitor command, for example, fails because
of a spelling error; you can simply say CONTROL-RETURN, correct the
error, and say RETURN to activate the corrected command.
The TAB character is treated in a special way by the line editor.
Commands like CONTROL-SPACE treat a TAB as a single character, so a
CONTROL-SPACE when the cursor points to a TAB will move several
spaces to the right. Typing a character without control bits,
however, only replaces the first space of the TAB. There will still
be a TAB in the buffer, unless the TAB was positioned so that it was
only equivalent to one space, in which case it goes away completely
when another character is typed over it.
2.3 Line Editor Activation
This section is about the workings of line editor activation: how the
line editor decides to release characters to your terminal input
buffer. There is quite a bit of arcane detail here, covering special
cases, which is not generally important to the user. This section
can be skipped by most readers.
The activation mechanism can be controlled to some extent by UUOs
given by your program. Specifically, your terminal can be in normal
activation mode or special activation mode. In the latter case, your
program determines exactly which characters activate. The program
can also disable the CONTROL-RETURN function, as well as the
2.3 Line Editor Activation 19
automatic insertion of line feed after return. However, the rest of
this discussion assumes you are in normal activation mode.
Any character with CONTROL or META on will activate unless it is
taken as a meaningful line editor command. In particular, META will
activate at the end of the line. CONTROL always activates on
characters which are not meaningful line editor commands, e.g.,
CONTROL-A always activates, and CONTROL-D activates at the end of the
line only. CONTROL-META together always activates. RETURN, LINE,
and ALT always activate, regardless of the CONTROL and META bits
used. (Actually, in the case of RETURN, it is the line feed,
supplied by the monitor, which is really the activation character.)
When you type an activation character, all the characters in the line
editor are transferred to your terminal's input buffer and are no
longer editable. If your program is doing line-at-a-time input, the
character which activated the line editor may or may not be an
activator for your program. (Normally, line editor activation
characters also activate the program, but this may be changed with
special activation. For example, the line editor cannot store
characters with control bits, so such characters always activate the
line editor if they are not line editor commands. Your program may,
however, choose not to be activated by such characters, in which case
they remain in your input buffer until a character which does
activate the program is read.) When you type a program activation
character inside a line, all characters in the line editor are moved
to your input buffer, but your program can only read (in line mode)
characters up to the activation character. The program may ask to
get a nine-bit representation for the characters, so the CONTROL and
META bits of the activation character are sent. There is a special
kludge in the line editor so that whenever you type RETURN (without
CONTROL or META), the RETURN is put at the end of the line, as if you
had typed CONTROL-TAB first. This is not true for other activation
characters, so characters after the activation character won't be
editable, but won't be available to the program either until you
activate again. Most programs are written so that something fairly
intuitive happens when you activate in the middle of the line, but it
is possible to confuse yourself. In particular, when you re-edit (by
typing CONTROL-RETURN) a line which was activated with something
other than RETURN, the activation character appears in the line
(without control bits); if you type RETURN, you get the same old
activation character, not a RETURN at all! There are some peculiar
things which happen if you delete the old activation character first,
though--it is possible to have the RETURN activate the line editor,
but not put in any activation character and not actually activate
your program until you type a second RETURN.
2.4 ESCAPE and BREAK Commands 20
2.4 ESCAPE and BREAK Commands
Certain special characters are used to control the status of your
display terminal. These are processed directly by the monitor's
keyboard scanner, whether or not you are in monitor mode. One
example, mentioned above, is CALL. This key stops your program, if
one is running, and returns you to monitor mode. You can also type
CONTROL-CALL or META-CALL for a deferred call--the program is stopped
when it tries to read the CALL character from your input buffer.
Thus you can type some commands into a program, followed by a
deferred call; when the program is finished with your commands and
asks for more, it will be stopped.
There are several commands using the ESC and BREAK keys. Generally,
the format is ESC or BREAK, then possibly a numeric argument, then a
letter which specifies the command. There should be a concise
summary of these commands attached to your keyboard; if not, log in
and type this:
XGPLIST DDKEY.BH[UP,DOC]/FONT=FIX20
(or IIIKEY instead of DDKEY if you are using a III terminal) to print
the list on the XGP.
ESC O will stop typeout from your program. Any characters already in
your output buffer are deleted, and any attempted typeout from your
program is ignored. The program continues running, however. Typeout
is resumed if you type BREAK O, or if your program reads any
characters from your terminal.
Display terminals are normally in full character set mode, which
means you can type in upper and lower case letters. You can leave
this mode by typing BREAK F, which has essentially the same effect as
pushing the SHIFT LOCK key. You type ESC F to return to full
character set mode. The only use for this that I know of is that you
can convert a line of text in a file to upper case in E by typing
BREAK F, then something like CONTROL-SPACE to load the line into the
line editor, then RETURN. Try it.
Some programs which read data from your terminal expect an "end of
file" indication after the data. The thing to type to supply this
signal is CONTROL-META-LINE.
It is possible to suspend typeout from your program temporarily
without losing output, as with ESC O. Typing CONTROL-BREAK starts
this automatic holding. The word HOLDING appears at the top of your
screen, and the program is stopped if it tries to type more
characters than fit in your output buffer. Automatic holding is
2.4 ESCAPE and BREAK Commands 21
released by typing any line editor activation character, or
CONTROL-CLEAR.
Sometimes you may want to write a program which you can interrupt
with a signal from your keyboard, without having to keep checking for
terminal input in the program. For example, if you run a program
which searches a large data base by command, you may want to be able
to abort a search without stopping the program. Typing ESC I will
generate an interrupt condition which your program may enable; the
use of program interrupts is described in the UUO Manual.
2.5 The WHO Line
The next set of commands have to do with the WHO line, a display of
system status and the status of a particular job on the top two lines
of your screen. Once you start a WHO line display, it is
automatically updated until you turn it off explicitly. To start a
WHO line for the job at your terminal, type ESC W. You can see the
WHO line for another job, job number n, by typing ESC n W. To turn
off your WHO line display, type BREAK W. (Note: this does not
actually make the WHO line disappear on Data Discs, where anything
you display stays on the screen until it is explicitly erased.)
One use of the WHO line is to keep track of the progress of a job of
yours other than the one at the terminal you're using. To facilitate
this, typing ESC Q will display the WHO line of the next job in the
monitor's job table with your programmer name (or with the same name
as the job whose WHO line you are already displaying, if any).
Typing ESC Q repeatedly will cycle through all such jobs. BREAK Q
does the same thing, except that it searches the job table backwards.
This is the format of the WHO line:
DD JBS,TCOR R,RCOR UCOR NL% DSKQ DATE DAY TIME
JOB PPN TTY QUEUE JOBNAM SIZE RUNTIME-RP XTIME-XP DSK SEG (ALIAS)
The first line is the system WHO line:
2.5 The WHO Line 22
DD number of Data Disc channels in use (maximum=31)
JBS number of jobs logged in
TCOR total core of all jobs (including swapped out)
in blocks of 1024 words
R number of jobs actually run in the last few seconds
RCOR total core of the jobs counted in R
UCOR amount of core available for running user jobs
NL system null-time percentage over the last few seconds
DSKQ number of jobs waiting to use the disk
DATE uh, let's see...
DAY day of the week
TIME time of day (24-hr clock)
The second line refers to a particular job:
JOB the job number of the job being displayed
PPN its logged-in project-programmer name
TTY its terminal number (in octal) or DET for detached jobs
QUEUE the system queue that the job is in (see below)
JOBNAM the program being run
SIZE size of the job's core image
RUNTIME total run time since login, in minutes and seconds
RP RUNTIME as a percentage of the job's total wait time
(time the job was runnable but not running)
XTIME incremental runtime, normally reset on terminal input
but see below
XP XTIME as a percentage of incremental wait time
DSK number of incremental disk operations (reset with XTIME)
SEG name of upper segment if any
ALIAS disk PPN (see below) if any
Some of these need more explanation. The QUEUE is an indication of
the immediate status of the job--is it runnable, waiting for input,
stopped, etc. These are the possible queue names:
2.5 The WHO Line 23
RUNQ The job is runnable and not waiting for I/O, etc.
TQ This is a high-priority run queue which jobs are in for a
short time after leaving certain kinds of I/O wait.
STOP The job is stopped because it exited, the user typed CALL,
or there was an error in running the job.
NULQ The job has no core image.
IOWQ The job is waiting for some input/output operation, or for
the completion of a SLEEP or JOBRD UUO. This most often
means the job is waiting for the user to type something.
DIOW The job is waiting for some I/O operation and may not be
swapped out until it is completed.
INTW The job has suspended itself waiting for an interrupt.
DWQ The job is waiting for a device (e.g., LPT) to be free.
MTQ The job is waiting for the magnetic tape controller.
DTQ The job is waiting for the DECtape controller.
DCQ The job is waiting for the data controller
(used for mag and DEC tapes).
CMQ The job is not in core and needs to be brought in quickly;
if a job stays in this queue for long, something is wrong.
Some special characters may be displayed after the queue name:
- The job is currently running.
* The job is swapped out. A second * means the upper segment
is swapped out.
⊗ The job has been locked in core by the LOCK UUO.
\ The job is running a spacewar module on the PDP-10.
/ The job is running a spacewar module on the PDP-6.
X The job is running spacewar modules on both processors.
Some of the above may not be clear until you read the UUO Manual.
The alias is a PPN used as the default directory for disk files
instead of your logged-in PPN. There is an ALIAS monitor command to
set the alias for your job.
XTIME is an incremental run time, measured in minutes, seconds, and
60ths of a second (a 60th of a second is called a tick). It is
normally reset whenever the program is started by a monitor command
other than CONTINUE, and also whenever the job is awakened by input
from the terminal after having been in IOWQ waiting for such input.
Note that if you type ahead, so that the job never enters IOWQ,
terminal input will not reset XTIME. It is possible to inhibit
resetting of XTIME with the BREAK X command (see below). If
resetting is inhibited, the character separating spaces from ticks in
the display will be ` instead of ' as it usually is.
BREAK X inhibits resetting your job's XTIME. ESC X resumes the
automatic resetting as described above. Neither of these changes the
current value of your XTIME. Typing ESC 1 X will set your XTIME to
2.5 The WHO Line 24
zero; BREAK 1 X will set it equal to your RTIME (total run time).
Both ESC 1 X and BREAK 1 X inhibit automatic resetting, so you have
to type ESC X if you want to restore this.
2.6 Page Printer Control
There are two ways of printing on display terminals. To exploit the
full capabilities of the display for graphics, display programs can
explicitly control the positioning of points, vectors, or characters.
On III terminals, 16 such display programs can be written
independently, and any combination of them activated or displayed at
any time under program control. These display programs are called
pieces of glass. On Data Disc terminals, only one display program
can be run on each Data Disc channel, although the effect of multiple
pieces of glass can be gotten in a different way by displaying more
than one channel on the screen (see Section 2.7, which describes
the video switch).
The other way of printing on a display terminal is simply to output
text to be printed in order as if on a piece of paper. The monitor
automatically "scrolls" such output; when the area of the screen
being used fills up, the text is moved up a few lines, with the top
part disappearing. Sixteen of these pieces of paper can be displayed
at once, on different parts of the screen. At any time, one of these
pieces of paper must be selected by the program as the one to receive
page printer output. The dimensions of each piece of paper are
controlled by the program, but the currently selected one can also be
controlled from the terminal with ESC commands.
The dimensions of the page printer include several factors. First,
the vertical position of the top line of the page. This can be set
by the command ESC n Y for line n. (Lines 1 and 2 are where the WHO
line goes; the normal position is line 4.) ESC Y resets the vertical
position to normal.
The scrolling function is controlled by two parameters: the number of
lines typed before a glitch (the upward repositioning of the text),
and the number of glitches on the page. These are set by ESC n L for
lines/glitch and ESC n G for glitches/screen. The defaults are 4
glitches of 9 lines for Data Disc terminals, and 12 glitches of 2
lines for III terminals. ESC L and ESC G restore the respective
counts to normal.
It is possible to cause automatic holding, as with CONTROL-BREAK,
every n lines or every n glitches. The commands for this are ESC n E
for every n lines, and ESC n J for every n glitches. At each pause,
2.6 Page Printer Control 25
the word HOLDING will appear on the third line of the display.
CONTROL-CLEAR will resume output as usual. ESC E and ESC J disable
the respective automatic pauses.
Typing ESC N will normalize your page printer. BREAK N will clear
your screen, normalize the page printer, and display the text in the
page at the normal position. To refresh the page printer display
without changing the page printer geometry, type ESC P. BREAK P will
clear the screen and then do ESC P. These are useful for getting rid
of any noise which may appear on your screen. There is a rarely-used
ESC R to refresh just the display of your line editor.
Note: Any RESET of your job, either by the RESET UUO or automatically
by the system, eliminates all but piece of paper 0, selects that
piece of paper for further output, and normalizes the page printer
display. The UUO Manual explains the RESET function.
2.7 Data Disc Control
Certain ESC and BREAK commands have special functions for Data Disc
terminals only, and some for III terminals only. This section is
about the Data Disc ones.
The usual display on a Data Disc screen is green letters (hereafter
called "white") on a black background. It is also possible to
display black on white, by typing BREAK C. To restore the normal
white on black, type ESC C. Both of these clear the screen, so you
have to type ESC P to refresh your page printer display. Black on
white display requires increasing the contrast and brightness
controls to be visible. This is not the world's most useful feature;
it is also possible, under program control, to display only part of
the screen in black on white.
The remaining Data Disc commands are used to control the video
switch. This device allows you to select from the 32 Data Disc
channels, plus various TV cameras and video synthesizers, what you
want to see on your screen. You can see more than one Data Disc
channel at a time, but only one of the analog channels (the cameras).
You can select an analog channel along with a Data Disc channel only
if the two are synchronized; e.g., the lounge TV signal can't be
combined with a Data Disc channel because the synchronization of the
former is not under our control.
Data Disc channels in use by a job may be public or private. Only
public channels may be selected by other users. The channel used by
a terminal is normally private. The command ESC H hides (makes
private) your terminal's channel; BREAK H makes it public.
2.7 Data Disc Control 26
Video switch commands are generally of the form ESC n x, where n is a
channel number (Data Disc or analog channel) and x is the command
letter. The form BREAK n x interprets n as a terminal line number.
Thus, ESC 30 S selects Data Disc channel 30, but BREAK 30 S selects
whatever channel is assigned to TTY30.
ESC or BREAK n S makes a permanent selection, which remains in effect
until you give another video switch command to change it. ESC or
BREAK n T makes a temporary selection, which reverts to the permanent
selection whenever your job is RESET by UUO or automatically. To
display more than one Data Disc channel at once, type ESC or BREAK n
A to add a channel; ESC or BREAK n D deletes a channel.
Using ESC with no numeric argument on a video switch command means
your terminal's channel. Thus, ESC S restores your own display.
BREAK with no numeric argument is the same as ESC 45, which selects
the lounge TV. Thus, BREAK S at 6pm on a weekday selects Star Trek.
The ESC N and BREAK N commands, which normalize the page printer on
all displays, also imply ESC S on Data Discs.
Note that your program can also modify the video switch settings by
UUO.
2.8 III Control
At a III terminal, several different display programs, called pieces
of glass ("pog"), may be running at once. You can choose which of
these (zero or more at once) are actually displayed.
ESC n S selects piece of glass number n only. ESC n A adds piece of
glass n, and ESC n D deletes pog n. If no numeric argument is used,
these commands apply to all pogs, e.g., ESC D clears all pogs from
the screen.
ESC C eliminates all pogs (your page printer is still displayed). It
is different from ESC D in that the display programs are completely
forgotten, so they cannot be reselected.
Note that the selection of display programs can also be controlled by
a UUO in your program.
2.9 Audio Switch Control 27
2.9 Audio Switch Control
Associated with each display terminal is a loudspeaker which can be
connected to various sound sources under computer control, by an
audio switch analogous to the video switch for Data Disc channels.
There are 20 (octal) audio switch input channels, numbered 0 to 17.
Only one channel can be connected to your speaker at a time.
One of the input channels is normally silent, but is connected to the
telephone paging system when a page is in progress (i.e., someone has
dialed 9 on the com line). When you are listening to another
channel, you may choose to be switched to the paging channel
automatically when a page is in progress and then returned to your
original channel.
The command ESC n U will select audio channel n and allow paging
interruption. BREAK n U selects channel n and does not allow paging.
ESC U or BREAK U selects the silence/paging channel.
At a Data Disc, the BREAK S, BREAK T, and BREAK A commands, which
select the lounge TV picture for your screen, also select the lounge
TV audio for your speaker.
As we go to press, the following audio switch inputs are connected:
0 silence/paging
1 lounge TV
2 tuner in Helliwell's office
3 tuner in machine room
4 digital-to-analog converter channel 1
5 beep generator
3. Teletypes 28
SECTION 3
TELETYPES
Teletypes do not have display screens, nor do they have the full
Stanford ASCII character set. This means that certain things are
typed differently.
The CONTROL (CTRL) key on a Teletype does not produce the same codes
as CONTROL on a display. Instead, it produces codes which, on
display terminals, represent some of the TOP characters. Most
programs which deal with Teletypes, however, either cleverly use only
characters which are the same on all terminals, or have special
notations for use at Teletypes. In particular, there is an SOS
representation (named after a Teletype editor) for printing
characters not found on Teletypes, namely a question mark followed by
some other character. See Appendix 13.
To get the effect of CALL, type CONTROL-C twice. (Control characters
on Teletypes generally echo as ↑<character>, so now you know why CALL
on displays prints ↑C.) Deferred CALL is a single CONTROL-C.
Although there are several models of Teletypes and similar terminals,
most of ours do not have lower case letters. The SHIFT key on these
terminals, like the TOP key on our displays, produces
non-alphanumeric printing characters. Most of these are labelled on
the Teletype keys, but you may not find [ (SHIFT-K), \ (SHIFT-L), or
] (SHIFT-M) labelled on some models.
There is no line editor on Teletypes. You can delete the last
character on a line by typing RUBOUT, which prints a backslash and
then the deleted character. Successive RUBOUTs will print the
characters deleted, until a non-RUBOUT, which prints another
backslash and then whatever you typed. CONTROL-U will delete the
entire line, like CLEAR on a display.
Most of the ESC and BREAK commands have no Teletype equivalent.
CONTROL-O flushes typeout like ESC O. A second CONTROL-O resumes
typeout like BREAK O. CONTROL-B starts and stops typeout holding,
like CONTROL-BREAK and CONTROL-CLEAR on display terminals. There are
monitor commands to provide some of the ESC facilities; e.g.,
TTY WHO
will type out your who line once.
3. Teletypes 29
The end-of-file character for Teletypes is CONTROL-Z. If your
program does input by TTYUUO, CONTROL-Z is converted to 612 (the code
for CONTROL-META-LINE). TAB is typed as CONTROL-I. FORM is
CONTROL-L, and VT is CONTROL-K. RETURN, LINE, and ALT have
corresponding Teletype keys. (The key for ALT may be labelled ALT
MODE, ESCAPE, or PREFIX depending on when the Teletype was built.)
It is possible to use our computer from another computer, over the
ARPA network, or by telephone connection. The Teletype conventions
also apply to these connections.
4. Basic Monitor Commands 30
SECTION 4
BASIC MONITOR COMMANDS
Commands like LOGIN tell the monitor to run particular system
programs in your core image. In this section, monitor commands which
do not refer to a specific program are described. Some of them do
not refer to programs in your core image at all, but are handled
entirely within the monitor itself; others run programs, but allow
you to specify the program as a command argument rather than implying
a particular one like LOGIN.
4.1 Running Programs
The RUN command takes as arguments an optional device name, a file
name, and an optional core size argument. If the first argument is
not a device name, DSK is used. The only allowable devices are DSK,
SYS, MTAn, and DTAn. Running programs from magnetic tape or DECtape
is not recommended. If the file name does not include an extension,
DMP is implied.
The core size argument, if any, should be a decimal number indicating
the number of 1K (1024 word) blocks desired for your core image.
This must be at least as much as the saved core image, but you can
ask for more. Certain programs with variable buffer space will use
as much as you initially allocate. (Programs can increase their core
size dynamically by UUO.)
If you are running from magnetic tape, the core size argument must be
used; otherwise, the size of your core image before giving the
command will be used. This is because the monitor cannot determine
the size of a file on magnetic tape before reading it.
The program is loaded into your core image, your job name is set to
the name of the dump file, and the program is started at the starting
address specified in the dump file.
The R command is used for running system programs. The command
R FOO 10
is identical to
RUN SYS:FOO 10
4.1 Running Programs 31
(The SYS device is actually the disk, but with the special system
directory [1,3] implied. This directory is used to store system dump
files.)
By using the GET command (abbreviated G), it is possible to load a
dump file into your core image without starting it. This command
takes the same arguments as RUN, but instead of starting the program,
it types out a message indicating the size of your core image and
leaves your terminal in monitor mode.
All of the commands in this section cause a RESET of your job.
4.2 Manipulating Core Images
The following commands refer to words in the Job Data Area (see page
14) of your core image. These words are generally set up by the
monitor or the LOADER. The UUO Manual has a complete explanation of
the Job Data Area.
The CORE command is used to find out or change the size of your core
image. CORE may be abbreviated C. If you include an argument, the
size of your core image will be set to that many blocks. If you do
not give an argument, your core size is typed out, along with the
size of your upper segment, if any; a final line gives the total
amount of core available for user jobs. If you give the CORE command
when you are not logged in, you get only the last line.
The command CORE 0 destroys your core image. It also causes a system
RESET of your job, releasing any I/O devices you were using, etc.
The way to create core image dump files which can be loaded later is
with the SAVE command. This takes device, file, and size arguments
just like GET. This command also does a RESET, and it does not save
your accumulators. Therefore, the program cannot be continued after
a SAVE command, although it can be restarted.
Unless your core image includes DDT or RAID (JOBDDT nonzero), only
the locations up to the address in JOBFF are saved. (This does not
apply if you use a core size argument.) JOBFF is set by the LOADER to
the highest address it loads into, so any core which was allocated
dynamically by your program will not be saved unless the program
updates JOBFF. I/O buffers allocated for you by the system are
allocated above JOBFF, which the monitor then sets to the new highest
address.
If your program includes an upper segment which you wish to save, you
4.2 Manipulating Core Images 32
should use the command SSAVE. This is just like SAVE in other
respects. SAVE never saves upper segments.
It is possible to examine and alter words in your core image
individually by monitor commands. The command E (examine) with an
octal argument will type the contents of the specified address in
octal. The DE (deposit) command takes three arguments in octal: the
left and right halves of the word you want to deposit, and the
address. DE without the address argument uses the address of the
last E or DE command. E with no argument examines the location
following the last one used by E or DE. (Note that the DDT and RAID
debugging programs provide a much more versatile way to do this.)
4.3 Starting Programs
The following commands refer to words in the Job Data Area (see page
14) of your core image. These words are generally set up by the
monitor or the LOADER (except for JOBREN). The UUO Manual has a
complete explanation of the Job Data Area.
The START command (abbreviated S) is generally used to start a
program at its normal starting address in JOBSA. This command can
also be used with an octal argument specifying some other address.
The REENTER command starts the program at the reenter address
specified in JOBREN, if there is one. JOBREN must be set by the
program if it wants to use this capability. Program documentation
will explain the use of the REENTER command for a particular program.
The DDT command starts the program at the address in JOBDDT, if any.
This address is set by the LOADER if either DDT or RAID (the
debugging programs for Teletypes or displays) is loaded with your
program.
When a program is stopped by typing CALL, by a UUO in the program, or
by various other conditions, the address of the next instruction to
be executed is stored in JOBPC. If the job is continuable (not
stopped because of an irrecoverable error), the CONTINUE command will
start it at that address. (The START, REENTER, and DDT commands will
work even if the job is not continuable, except for certain errors
which destroy the core image irretrievably.)
All of the above commands place your terminal in user mode, that is,
anything you type will be processed under control of your program.
It is also possible to start a program, but leave the terminal in
monitor mode. In this case you can still enter monitor commands
4.3 Starting Programs 33
which do not affect your core image. Monitor commands which are
illegal while your program is running will give the message PLEASE
TYPE ↑C FIRST.
The CSTART command is like START but leaves your terminal in monitor
mode. Like START, it will take the desired start address as an
argument or use the contents of JOBSA. The CCONTINUE command is the
monitor mode equivalent of CONTINUE. There is no such equivalent for
REENTER or DDT. With the terminal in monitor mode, the program can
still type output on it, but an attempt at reading from the terminal
will make the job wait (in IOWQ~) until the terminal is placed in
user mode.
The HALT command stops your program. The monitor converts the CALL
key into this command, so you should never need to type it
explicitly. (The only time you can type it explicitly, of course, is
if you started the program with CSTART or CCONTINUE.)
4.4 Detached Jobs
Normally, any user job is associated with a particular terminal.
However, it is possible to detach the job so it can continue running
while you do something else (another job) at your terminal. Also,
the monitor sometimes starts up detached jobs itself to perform
various system functions.
Detached jobs can run, and do all the things attached jobs can do,
except that if they try to output to device TTY, the output is lost;
attempted input from TTY makes the job wait indefinitely (until it is
attached). If a detached program executes an EXIT UUO, the job is
killed.
The DETACH command detaches your job, leaving your terminal in
monitor mode and not logged in. You can then log in again without
affecting the old job. DETACH takes no arguments. Several commands
described below combine the DETACH function with other useful things.
Please remember not to leave jobs detached forever, but to log them
out eventually!
The ATTACH command is used to attach your terminal to a detached job.
If you are already logged in, your old job is detached. The ATTACH
command takes two arguments, a job number and the PPN under which
that job is logged in. (If you are already logged in with the same
PPN, you need not give the second argument.) The job must be detached
before you give the command. Note that if you were displaying a WHO
line for your old job, it will still be displayed, indicating the job
4.4 Detached Jobs 34
as detached. This is handy for re-attaching it when you want to, in
that it shows the job number. (Typing ESC W again will, of course,
display the WHO line for your new job.)
The FORK command will detach your old job and log in a new one. It
is faster than DETACH followed by LOGIN, because it does not run the
LOGIN program. Instead, it merely copies the system information from
your old job into the new job. In particular, if you have an alias
in your old job, it is copied to the new job as well.
Often you want your program to continue running in the old job while
it is detached. You could say CCONTINUE and then DETACH, but the
command CDETACH combines these functions. There is also a CFORK
command which combines CCONTINUE and FORK.
4.5 Device Control
Certain I/O devices can only be used by one user at a time, such as a
magnetic tape unit. In some cases, like the line printer, the system
provides a facility for queueing print requests so that individual
users need not actually control the device themselves. However, when
a user does need to use such a device, the ASSIGN command is used to
ensure that only one user at a time tries to use the device. The
ASSIGN command (abbreviated A) can also be used to cause a logical
device name to be associated with a particular device. Thereafter,
any reference by your program to the logical name will be translated
into the corresponding physical device.
The command takes two arguments, a physical device name, and an
optional logical name. The physical name can be generic: the command
ASSIGN MTA
will select an available mag tape unit (MTA0 or MTA1) if there is one
available. You can also select a particular unit explicitly.
The logical name feature is sometimes used by programs to allow you
to control their I/O without having to type instructions to the
program itself. For example, a program which produces a listing
output might direct it to a particular filename on device name LST.
Before running the program, you could type
ASSIGN DSK LST
to write the listing file on the disk, or
ASSIGN TTY LST
4.5 Device Control 35
to type it out at your terminal. You can also change the meaning of
what is normally a physical device name this way--the command
ASSIGN DSK LPT
will make a program which was written to write its output on the line
printer use a disk file instead. You might do this if the line
printer is not available when you want to run the program.
Once you have assigned a device with the ASSIGN command, no other job
can use it until you release it with the DEASSIGN command. This
command, abbreviated D, takes either a logical or a physical device
name as argument. (Note--Assigning DSK or SYS does not prevent other
users from using the disk.) It is possible for a program to use a
device which is not assigned, but the device is released in that case
as soon as the program stops using it. The DEASSIGN command with no
argument will deassign all devices assigned by your job.
The job which has a device assigned may give it to another job with
the REASSIGN command. This command takes two arguments, the device
name and a job number. This can occasionally be useful if, for
example, one job writes a tape which another should then read. The
REASSIGN command prevents the possibility of another job grabbing the
tape unit before the intended recipient does.
The FINISH command (abbreviated F) is like DEASSIGN except that it
releases the device from your program as well as from the ASSIGN
command assignment. If the device is a directory device which your
program had open for output, the file is closed so that as much data
as the program wrote will be saved. (This applies in the case in
which the program was stopped before its normal exit, either by CALL
or by an error.) F with no argument releases all devices.
The FLUSH command is designed to allow a terminal which is not in use
but somehow has something in its input or output buffer to be
emptied. It takes a device name as argument; the device must be a
terminal which is not in use, or your own terminal. This command may
be used without logging in.
4.6 System Information
Several commands exist to find out various things about your job or
others. Some of these duplicate information available on the WHO
line at display terminals. None of the commands in this section
affect your core image.
4.6 System Information 36
The PJOB command types the job number of your job, if you give the
command with no argument. If you use a device name as the argument,
it types the number of the job using the device. (If the device is
not in use, it says so.)
The PPPN command prints out the logged in PPN and the alias, if any,
for your own job (no argument) or the job number you give as
argument.
The PTTY command prints out the terminal line number of your own or
another job. If the terminal is a DataDisc, it also prints the
channel number. The TIME command, which also takes an optional job
number argument, types out five quantities for the specified job; the
first four are times, in hours:minutes:seconds'ticks (a tick is one
sixtieth of a second):
TOTAL is the total run time for the job.
INCREMENTis the run time since a TIME command for this job was
last given by the job itself. That is, the INCREMENT time
is reset when you give a TIME command for your own job,
but not when you give one for another job.
XTIME is the same as the XTIME displayed on the WHO line--it is
reset whenever the job is started by a command other than
CONTINUE, and whenever the program is returned to the RUN
queue after waiting for terminal input. This meaning of
XTIME can be changed; see page 23 for a complete
discussion of XTIME.
WAIT is the time the job has waited for the system, including
time in RUNQ and disk I/O wait, but not tty I/O wait,
STOP, etc. It is a measure of the quality of service
the job is getting.
KCS (kilo-core-seconds) is a measure of the demands
the job has made on the system. It is incremented by the
job's core size (in K) every second of runtime.
The command TIME 0 types the time since the last system reload, the
percentage of that time spent in core shuffling, and the percentage
spent running the null job (what the system does when there are no
real jobs it can run).
The DAYTIME command with no argument types the current day of the
week, date, and time. With a job number argument, it types the time
that job logged in, the time it was last run, and the current time.
DAYTIME 0 specifies your own job.
The RESOURCES command lists the available system resources. It types
the number of free disk blocks, the number of Data Disc channels
free, the number of job slots available, and the names of free
devices (mag tape, etc.) other than the disk and terminals.
4.6 System Information 37
The FILES command lists disk files in use by a job, with some status
information. It can take a job number argument (0 means your own
job), in which case all files in use by that job are listed, or a
filename argument, in which case the status of the specified file is
displayed (if it is being used by any job). Each line typed by this
command contains the job number of the job using the file; the
filename, extension, and directory ppn of the file; the number of
records in the file; the number of the record currently being read or
written; and the way the file is being used: R for read, W for write,
or RA for read-alter, possibly followed by E for end-of-file seen.
The FILES command with no argument is normally equivalent to FILES 0;
however, if a FILES command results in more information to type than
fits in the output buffer, the command lists as much as will fit
followed by a line with an ellipsis (...), and a FILES command with
no argument will continue the list from that point.
The HELLO command types the name of the current version of the
monitor.
All of the above commands are legal when you are not logged in. The
following one is not.
The SLEVEL command types out your current service level reservation.
The service level system attempts to guarantee the reserved
percentage of the computer's time to programmers who make such
reservations. See the RSL command, in Appendix 6.
4.7 Miscellaneous Commands
The TTY command can be used to change several characteristics of your
terminal. It takes as argument a keyword specifying the thing to
change. As in typing monitor commands, only enough letters of the
keyword as necessary to make it unique need be typed. The keyword
may be preceded by NO or - to reset the corresponding switch. The
keywords are
4.7 Miscellaneous Commands 38
TABS declares that the terminal has hardware tabs, so the
monitor will not convert tabs to spaces on output.
ECHO tells the monitor to send back to the terminal the
characters you type in.
FILL tells the monitor to insert extra carriage returns when a
return is typed out at the terminal, to give the carriage
time to return to the left margin. This is used mainly
for 30 character per second terminals.
FULL declares that the terminal has lower case letters, so
lower case should not be changed to upper case on output.
Equivalent to ESC F on a display; NO FULL is like BREAK F.
UPDATE enables automatic resetting of XTIME, like ESC X from a
display. NO UPDATE is like BREAK X.
TIME resets XTIME and stops automatic resetting, like ESC 1 X.
NO TIME, like BREAK 1 X, sets XTIME to the total run time.
WHO types out your job's WHO line. "TTY WHO n" will type out
the WHO line for job n; "TTY WHO 0" or "TTY -WHO" types
out the system WHO line.
The TABS, ECHO, and FILL keywords have no effect at display
terminals. You need not be logged in to give the TTY command, except
for the UPDATE and TIME functions.
The ALIAS command is used to set your job's disk PPN or alias. If
you have an alias, all disk references by your job which do not
include an explicit PPN will use the alias directory rather than your
logged-in PPN directory. The argument can be PRJ,PRG to set the
alias to that PPN, or just PRJ to use your own programmer name in the
alias. No argument resets your alias to zero, so your logged-in PPN
will be used for disk files. If you have an alias, your logged-in
PPN is still checked for file protection purposes.
The TALK command can be used to talk to a user at another terminal.
It takes a device name as argument. The device must be a terminal,
which must be in monitor mode and must not have any characters in its
input buffer. (Device CTY, the PDP-10 console Teletype, is never
busy; TALK CTY always succeeds. Note to remote users: There is no
operator on this system; TALK CTY is not a good way to get
assistance!) If the command succeeds, all characters you type are
typed out on the other terminal, and vice versa. If the terminal you
specify was already in a talk ring, you are added to the ring; all
characters typed at any terminal in the ring appear on all the
others. You leave the talk ring by typing CALL. You need not be
logged in to enter a talk ring.
The KILL command can be used to kill another job with your programmer
name. It takes the job number as its argument.
5. System Program Commands 39
SECTION 5
SYSTEM PROGRAM COMMANDS
The remaining monitor commands all run particular system programs in
your core image. There are a few main groups of these commands and a
few miscellaneous ones. These commands are documented along with the
programs they run. The next two sections are about the LOGIN and
LOGOUT programs and the commands which run them; these were briefly
introduced earlier. The major command groups are then presented, and
finally the miscellaneous system programs. Many system programs are
not run by special monitor commands, but by the R command. Those
programs are not documented here, but in separate manuals.
5.1 LOGIN
The LOGIN command is used to begin a session of using the computer.
It runs the LOGIN program, which provides several optional services
as well as setting up the necessary system tables for your job.
The LOGIN command may be abbreviated L. It takes one argument, a
project-programmer name. Different characters used between the two
parts of the name are used for different options:
PRJ,PRG types all system messages and processes OPTION.TXT
(see below)
PRJ/PRG types system messages new since last login, processes
OPTION.TXT
PRJ.PRG types no messages, ignores OPTION.TXT; for fast login
PRJ%PRG sets new password, as explained below, then acts
like PRJ,PRG
System messages are notices for all users, sent by the MAIL * command
and stored in the file NOTICE.TXT[2,2]. There may also be messages
addressed to a particular project, to a particular programmer, or to
a PPN. Mail to your project is treated like system messages. The
handling of programmer or PPN mail is explained below.
It is possible to set a password to restrict logins on a particular
PPN. If there is a password, LOGIN types PASSWORD= and you must type
the correct password to log in. Echoing of input characters is
turned off so the password does not print. Passwords may be one to
six letters or digits followed by RETURN. You can set a new password
5.1 LOGIN 40
by using % in the LOGIN command. If there is already a password, you
must type it in. LOGIN types out NEW PASSWORD= and you can enter a
new one; if you type RETURN with no new password, you will no longer
have a password. Passwords are checked by the COPY program for
access to other users' files, but there are lots of programs that
don't check. If you have any information that you consider secret,
you are advised to take it elsewhere. The A.I. Laboratory is a
research establishment. There are facilities in the monitor which
provide valuable research tools; these facilities may be misapplied
to circumvent passwords and file protection. The protection that
does exist is for accident prevention, not for secrecy. Users are
assumed to be responsible persons.
If you log in from a remote terminal (by a dial-up telephone line),
you will be asked for a remote users password which is used to
discourage logins by unauthorized outsiders. If you need to log in
remotely, ask someone. Sometimes you may find that the system is in
maintenance mode, which means that the monitor is being debugged and
the system is not available for normal use. If you try to log in at
such a time you will be asked for the maintenance password.
The further details of LOGIN's operation are controlled by a file
named OPTION.TXT which you may have in your directory. If there is
one, it is searched for a line of the form
LOGIN:opt1,opt2,opt3;comments
where opt1...opt3 are the desired options. Spaces may be used in the
obvious places. Only the first six letters of an option name are
read. Upper or lower case is ok. Several other programs use this
OPTION.TXT file, looking for their own option lines. The LOGIN
options are as follows:
5.1 LOGIN 41
ME Tells you your fortune.
MESSAG Types your mail without asking; see below.
LOGRUN Runs the LOGRUN program, which executes monitor commands
from a LOGRUN entry in OPTION.TXT; see below for details.
WHO Starts a WHO line automatically if you are at a display
terminal, as if you had typed ESC W.
UNHIDE Makes your Data Disc channel public, like BREAK H.
FULL If you are at a Teletype, sets the full character set mode
switch. Equivalent to TTY FULL.
TABS If you are at a Teletype, clears the tab expand bit; tabs
will not be converted to spaces on output. Like TTY TABS.
FILL If you are at a Teletype, sets the fill switch to insert
extra carriage returns on output to give the carriage time
to get all the way back. Like TTY FILL.
DIGEST Tells you if there is a new Associated Press news digest
that came in after the last time you logged in and asks
you if it should type it out.
PORNO Try it and see. Doesn't work if you also have LOGRUN.
NOMAIL Avoids being asked questions about message files. This is
for people who like to type ahead while LOGIN is running.
The exact effect depends on what other options are used;
see below.
AUDIO=n Selects audio switch input channel n to your speaker if
you are at a display terminal. "n" is an octal number.
"AUDIO=-n" inhibits telephone paging interrupts,
like BREAK n U.
If there is a message addressed to your programmer name or to your
PPN, LOGIN normally types
THERE'S A NOTE FOR prg (or prjprg)
READ IT NOW?
If you type Y, the message file is printed, and you are asked if you
want to delete it. (You can also type R, which will treat the mail
like a system message file, i.e., LOGIN doesn't type header lines,
and if you used a slash in the command it only types messages which
came since you last logged in. In this case it does not ask if you
want to delete the file.) Note: Mail is normally sent to programmer
names, not PPNs. Some people send PPN mail to themselves as
reminders.
If you have the MESSAG option but not the NOMAIL option, then mail is
always typed out without asking first. If you have both MESSAG and
NOMAIL, the mail is typed but you are not given the chance to delete
it. If you have NOMAIL alone, you get the THERE'S A NOTE... line
but not the mail itself. (See the RCV command for another way to
process your mail.)
5.1 LOGIN 42
If you have DIGEST and NOMAIL, you are notified of a new A.P. digest
but it is not typed out. (RCV will also do this for you.) It is also
possible to get automatic notification of incoming A.P. stories on
particular topics from the APE program; these messages are treated
like programmer mail with respect to MESSAG and NOMAIL.
The LOGRUN program looks for a line in your OPTION.TXT file starting
with LOGRUN:. It then takes that line, and all following lines until
a semicolon is seen, and makes them be executed as if you typed them
in. (The semicolon is required.)
5.2 LOGOUT
The command for terminating a session on the computer is KJOB (kill
job), which runs the LOGOUT program. The command may be abbreviated
K. It takes an optional switch argument to select various optional
features. The OPTION.TXT file is also used to control logout
options.
The LOGOUT program normally types out several lines of accounting
information, e.g., computer time used. It deletes any files in your
directory with extension RPG (these are the files the RPG system uses
to remember the commands you gave), and if there are no files in your
directory, it deletes the directory itself.
If you have the RPGSAV option (see below), LOGOUT will look for
TMPCOR files (simulated files in core storage) used by some
processors for remembering RPG commands instead of disk files, and
copy them to the disk so they will be remembered the next time you
log in. Note that this will not be done if you use the /F switch
(below) for fast logout. Note also that LOGOUT does not save TMPCOR
files created under an alias, even if you are still aliased when you
give the KJOB command. (The monitor resets your disk PPN to your
logged-in PPN before running LOGOUT.)
You are told if you have another job logged in with the same PPN, and
if you have assigned any private devices (mag tape, etc.) you are
reminded to unload them.
This normal processing can be affected by switches in the command
itself or by options in the OPTION.TXT file. LOGOUT looks for a line
in OPTION.TXT of the form
LOGOUT:RPGSAV,ME,FAST;
(Of course, you need not use all the options.) These options, if
found, have the following effect:
5.2 LOGOUT 43
RPGSAV Don't delete RPG files.
ME Type a friendly message (try it).
FAST Just log out, don't delete anything,
don't save TMPCOR, don't print statistics.
Switches are single letters preceded by a slash (e.g., KJOB/F). The
switches are:
/K Kill RPG files (only necessary with the RPGSAV option.)
/S Save RPG files.
/M Type a message, like the ME option.
/F Fast logout.
/Z Zero the disk. Deletes all your files, after asking if
you really mean it.
There are two other monitor commands which run the LOGOUT program,
for logging in with another PPN, and for attaching to an existing job
(see the ATTACH command, Section 4.4.) They are
KLOG logout-switches ppn
KATTACH jobnum ppn logout-switches
The logout switches are as described above. The other arguments are
in the required form for the LOGIN and ATTACH commands.
Finally, there is a LOGOUT command, which is exactly the same as KJOB
but no arguments are allowed.
5.3 RPG
The RPG commands have already been mentioned. They run the RPG
program, which then runs various other system programs. The commands
are divided into two basic groups. The first, for text file editing,
take a file specifier as argument:
CTV create a file with TV
TV edit a file with TV
CREATE create a file with SOS
EDIT edit a file with SOS
MAKE create a file with TECO
TECO edit a file with TECO
The other major editor, E, includes the necessary code to carry out
the RPG functions itself, e.g., default extensions and remembering
the commands. The following commands are, therefore, not strictly
RPG commands but function equivalently:
5.3 RPG 44
CETV create a file with E
ETV edit a file with E
The second group, for program compilation, take one or more program
names, along with various option switches:
COMPILE compile programs
LOAD compile and load programs
EXECUTE compile, load, and run programs
PREPARE compile and load with a debugger
DEBUG compile, load with a debugger, and start the debugger
TRY compile, load with a debugger, and start the program
PUB produce a document with the PUB Document Compiler
Finally, one more command, used in conjunction with the compile-type
commands, which takes no arguments:
CREF produce cross-reference listings from compilations
The complete description of these commands, with the command syntax
and the processing options provided, is included as Appendix 1.
5.4 COPY and SPOOL
The next major group of commands runs the COPY program. Their
arguments are generally in the form "new-file ← old-file":
COPY copy a file
TRANSFER copy and delete the original
RENAME rename a file or change protection
The following COPY commands imply a destination, and take just one or
more input file specifications (separated by commas if more than
one):
DELETE delete a file
TYPE copy to the terminal
LIST copy to the line printer (SPOOL, below, is preferred)
PRINT copy to the line printer, different format options
XGPLIST copy to the Xerox Graphics Printer (XSPOOL is preferred)
DIRECTORYtype file directory
HELP explain system programs
The COPY manual explains these commands fully, along with various
options specified in the argument list; see Appendix 2.
5.4 COPY and SPOOL 45
Since only one job can use the line printer or XGP at a time, if
several people want to make listings at once there is a scheduling
problem. To solve this, the system allows listing requests to be
stored on disk, and processed one at a time by spoolers which
actually control the LPT and XGP. The system commands for this
function are:
SPOOL request line printer listing of specified file(s)
XSPOOL request XGP listing of specified file(s)
UNSPOOL delete a spooler request
QSPOOL type out spooler status and queues
The SPOOL commands also allow editing options to be specified in the
argument list; see Appendix 3 for details.
The HELP and QSPOOL commands may be given without logging in; the
others in this section require login first.
5.5 MAIL
Several commands are provided for sending messages to other users.
Messages can be filed on disk, so that the addressee will be notified
about them by LOGIN, or they can be sent directly to the terminal of
a logged-in user. There is also an automatic reminder system which
allows delayed messages. The commands for processing messages are:
MAIL send a message to a user's message file
SEND send a message to a user's terminal
REMIND request a delayed message
GRIPE send a message complaining about a system problem
RCV edit message files
LATER request delayed execution of a program
CANCEL delete REMIND or LATER requests
The usual format of the MAIL and SEND commands is
MAIL user message
SEND user message
where user is a programmer name and message is the text you want
sent. If you do not include a message in the command, the MAIL
program will ask you to type a message, which may then have more than
one line. The complete description of these commands is in Appendix
4.
The RCV command may be given without logging in; the others require
login first.
5.6 DART 46
5.6 DART
DART is a program to save disk files on magnetic tape and restore
them as needed. It also handles mag tape positioning commands. The
file dumping commands take disk file names as arguments:
DUMP dump disk files onto tape
RESTORE restore files from tape to disk
LOCATE find which tape has dumped copy of files
TLIST list all files on a tape
The tape positioning commands are:
REWIND
ADVANCE
BACKSPACE
EOT
The complete documentation of these commands is in Appendix 5 of
this manual.
5.7 DO
The DO program allows automatic execution of an arbitrary sequence of
commands. By writing DO command files, you can make your own
sequences of program execution analogous to the RPG
compiler-loader-execution sequence. The DO command takes a file
specifier as argument. The text in the file is simply transferred
into your terminal's input buffer, as if you had typed it. Then the
DO program exits, and the monitor processes the commands from the
file. The DO program cannot be run by detached jobs. The amount of
text allowed in the DO file is limited by the capacity of your input
buffer.
DO does some conversion of certain characters in the file, to allow
things like CONTROL and META characters. The characters which are
processed specially are:
5.7 DO 47
RETURN ignored
LINE ignored
↔ translated to RETURN (the monitor will supply a LINE also)
↓ translated to LINE
≠ translated to ALT
β translated to deferred CALL
VT adds CONTROL bit to the following character
FORM adds META bit to the following character
⊗ translated to ESC
⊗- translated to BREAK
| separates different DO functions (see below)
≡ quote the next character (do not process it specially)
? takes the next character (other than RETURN or LINE) as a
variable name. Suppose the character is A (i.e., ?A). If
this is the first occurrence of ?A in the file, DO types
"?A " and waits for you to type in a text string ending
with RETURN; the string is substituted for each occurrence
of ?A in the file.
To allow more than one DO function to be stored in the same file
(because small files are inefficient in using disk space), the
vertical bar (|) character can be used as a separator. The command
DO DOFILE(3)
will DO the commands between the second and third | characters in the
file.
The DO command remembers its argument in an RPG file, so you can type
DO without an argument to repeat the same command file. Also, the DO
command is remembered as if it were a COMPILE-type RPG command, so
the RPG exit mode commands in the text editors will also repeat the
DO command. Thus, users of languages like LISP which are not
recognized by RPG can write DO files to run LISP and read in their
program.
5.8 ZERO
The ZERO command is used to initialize file directories on disk or
DECtape. The command takes a device name as argument; the device
must be DSK, DTAn, or UDP (user disk pack).
For DECtape, ZERO simply executes the UTPCLR UUO, which tells the
monitor to initialize the file directory for the DECtape unit you
specified. Make sure you don't get the wrong unit number and zero
someone else's DECtape!
5.8 ZERO 48
If you specify device DSK, you must confirm (by typing Y) that you
want to delete all the files in your disk area. ZERO then attempts
to delete each file in your area. For each file, it types # if
successful, otherwise a message indicating the reason for the failure
(write protected, etc.).
For the UDP, you must give the write password when asked. Then you
are given the opportunity to initialize a directory on the pack.
(Note: the monitor does not maintain a file structure on the UDP.
The directory format on UDPs is maintained by the COPY program to
simulate a disk directory.) Generally this is only done once. The
other thing you may do with this command is change the write password
for the UDP. If you answer Y when asked if you want to do this, you
are asked for the new password, which is written on the UDP.
5.9 WHO
The WHO command (abbreviated W) runs the WHO program, which displays
system status information at your terminal. If you are at a display
terminal, the information is automatically updated as long as the
program continues to run. If you are at a Teletype, the information
is only typed once. The WHO command does not require that you be
logged in.
The first part of the WHO display is a list of the jobs on the
system, with various information about each job. This list is
divided into two sections, for jobs belonging to users and for system
phantom jobs. (More precisely, the second section contains jobs
which are detached and have the JLOG bit off in the job status word,
i.e., are not logged in.) Jobs attached to pseudo-teletypes are
listed under the controlling job, with the line for the controlled
job indented. The listing for each job has several parts:
5.9 WHO 49
JOB job number
QUEUE queue name, as in the WHO line, with possibly an extra
character meaning one of several states (if more than one
applies, the one listed first below is displayed):
- the job is now actually running
⊗ the job is locked in core
→ the job is an upper segment, next to be swapped in
↑ the job is next in line to be swapped out
↓ the job is next in line to be swapped in
* the job is swapped out
↔ the job is next in line to be moved in core
PPN the job's logged-in PPN
(This will be 100100 for not-logged-in WHOs, etc.)
LINE the job's terminal line number, or DET for detached jobs
JOBNAM the job name
SIZE the job's core image size in K (1024-word blocks)
TIME the job's total run time since login
PL percentage of CPU time spent on this job recently
SL service level reservation for this programmer
SEG job number of this job's upper segment
SW10 number of ticks between startups of job's PDP-10
spacewar module
SW6 number of ticks between startups of job's PDP-6
spacewar module
After the job display comes a similar display for upper segments,
containing the job number, job name, core size, and number of jobs
using the segment.
The next part of the WHO display is a summary of overall system
statistics. This includes the time since the system was last
restarted (UPTIME); short and long term time spent running the null
job (NULTIMES); short and long term time spent running the null job
when another job wanted to be run but wasn't in core (WASTED); total
user core image sizes in core and swapped out (CORE); the largest
contiguous free block of core, the total available user core not used
by locked-in jobs, and the total available user core (USABLE); the
number of jobs in RUNQ and TQ and their combined core image size
(RUNNING JOBS); and the total service level reservation for logged-in
users (TOTAL SLEVEL).
The final section of the WHO display is a list of all I/O devices in
use by programs or assigned by jobs. For each such use of a device
(at most one per device except for DSK), a line is displayed
containing the logical name, if any; the physical name; the character
"#" if the device was assigned by the ASSIGN command; the job number
using the device; if a particular file is open, the file name,
extension, and directory ppn (for disk files), the number of records
in the file, the record currently being read or written, and the
5.9 WHO 50
read/write status. This last will be W if the file is open for
output, R for input, or RA for read/alter mode, followed by E if the
end of file has been read. Note: if the file has been closed, there
may be no mode flag, and a large number like 1101 in the
current-record position. Record numbers are displayed in octal.
On display terminals, only a part of this display can fit on the
screen at any time. Single-character commands can be typed to WHO
which provide "scrolling" of the display as well as other functions.
The following commands are understood:
↓ scroll down 1/2 screen size
↑ scroll up 1/2 screen size
∞ run forever (otherwise WHO exits after nothing has been
typed in for two minutes)
R only display jobs which have recently been Running
(not in NULQ, STOP, IOWQ, or INTW)
M only display My jobs (login or alias programmer name must
agree with user's login or alias programmer name)
N restore Normal display (all jobs)
E Exit, leaving information displayed on the screen and with
the page printer set up to avoid erasing it
1-9 repeat argument for ↓ or ↑
Any other character will make WHO restore the page printer to normal
and exit.
5.10 FIND
The FIND command is used to locate information in a file by searching
for a keyword and typing out the "paragraph" in the file containing
the key. The main use of this program is to look people up in the AI
Lab telephone directory. FIND may be run without logging in first.
The syntax of the FIND command has the following form (brackets
denote optional things):
FIND [EXACTLY] key [ [IN] [file]]
If file=PHONE or is omitted entirely, the AI Lab telephone directory
is read. Otherwise, the specified file is read.
If a key contains any spaces or tabs, it must be separated from the
file name (if present) with the word IN, or delimited by " characters
or the quote pair ` ... '. A ` or ' character may appear in the
former, and a " may appear in the latter. If the number of spaces
5.10 FIND 51
and tabs in the key is significant (in EXACTLY mode), the quoted form
must be used. See the examples.
The file is logically divided into paragraphs. A paragraph consists
of twenty or fewer consecutive non-blank lines on one page. FIND
searches the file for paragraphs that contain the key. Each
paragraph containing the key is a hit and is typed out. Also, the
hits are counted and the count is printed at the end.
The EXACTLY qualification causes FIND to search for an exact match.
Otherwise it performs a template match. A template match recognizes
two special symbols in the key: space (one or more consecutive
spaces) and ellipsis (three or more consecutive dots). A space in
the key matches zero or more spaces, tabs, and carriage returns in
the paragraph. An ellipsis in the key matches zero or more arbitrary
characters in the paragraph. Furthermore, in a template match, upper
and lower case letters are equated. The EXACTLY search is somewhat
quicker.
Examples:
FIND john...lathrop<cr>
*McCarthy, John (Prof. John) 208 P[MTC*,JMC] 2 800
* 846 Lathrop Dr., Stanford, (9) 321-7580
1 HIT ON KEY = john...lathrop
FIND BRIAN HARVEY
will look up "BRIAN HARVEY" in the phone directory unless you
have a file named HARVEY, in which case it looks up "BRIAN"
in HARVEY.
FIND BRIAN K. HARVEY
always looks up "BRIAN K. HARVEY" in the phone directory.
FIND `BRIAN K.' HARVEY
or
FIND BRIAN K. IN HARVEY
looks up "BRIAN K." in HARVEY.
FIND BRIAN IN
looks up "BRIAN IN" in the phone directory unless you have a
file named IN, in which case it looks up "BRIAN" in IN.
5.11 Other System Information Programs 52
5.11 Other System Information Programs
This section describes other commands which run information programs.
All of them are allowed to be run without logging in.
The WHERE command types out information similar to WHO for jobs
belonging to a particular user. It takes a PPN or programmer name as
argument, and for each job whose login or alias PPN matches the
argument types out the job number, PPN, job name, core size, queue,
total run time, actual time when the job was last run, terminal, and
alias if any. (The terminal is listed by type and unit number, e.g.,
TTY5, III23, DD56, PTY121. Note that these are not actual physical
device names recognized by the system, except for TTYn.)
If you are logged in and run WHERE, you can give the REENTER command
and type in a job name. WHERE will then list all jobs with that job
name.
The FINGER command also lists jobs belonging to a particular
programmer, but provides different information: the job number and
job name, the programmer name, the real name of that programmer if
known to the system, the number of minutes since the job was last
run, the terminal number (and type, as in WHERE), and the actual
location of the terminal (room number, if in the lab, and whose
office it is). FINGER with no arguments displays all jobs which are
logged in.
The HELP command provides information about system programs. It
takes a program name as argument, and runs the COPY program, which
types out the file NAME[3,2] where NAME is the argument. HELP with
no argument lists the available HELP files. HELP files are generally
very short descriptions which refer you elsewhere for complete
documentation.
The SYSTAT command types out a system status description similar to
that of WHO. The WHO version is better, and SYSTAT is rarely used.
5.12 Miscellaneous System Programs
The commands in this section run miscellaneous system programs.
Except for FIXIMLAC, they require that you be logged in.
RSL runs the RSL program, which is used to reserve service level
(i.e., better service). The command takes no arguments. The meaning
of service level and the use of RSL are described in Appendix 6.
5.12 Miscellaneous System Programs 53
The LISP command runs the LISP interpreter. It takes no arguments.
Note: when the system wizards need a command table slot to patch in a
new command, LISP is the first to go. Therefore, it may not always
exist. R LISP has the same effect and always works.
The FIXIMLAC command is used to initialize IMLAC terminals. (These
are terminals which are treated as Teletypes by the monitor, but are
actually small computers with display screens.) With any luck, you
will never see an IMLAC. Just in case, the command is explained in
Appendix 7.
The XEROX command runs the XEROX program, which does file formatting
to produce pretty documents. It has nothing to do with the Xerox
Graphics Printer. XEROX has been largely replaced by PUB, a more
versatile formatter. The XEROX manual is the file XEROX.LES[UP,DOC].
The TELNET and TN commands (TN is used to abbreviate TELNET) run the
T program, for talking to another computer on the ARPA network. The
site name of the computer you want to use is the argument. If you
end the command line with ALT instead of RETURN, the program will
attempt to connect to the remote computer even if the monitor thinks
it's down.
The FTP command takes an ARPA site name like TELNET, but runs the FTP
program to carry out the File Transfer Protocol for copying files
between computers.
Further details on T, FTP, and the ARPA net in general is contained
in Appendix 8 of this manual.
6. Privileged Commands 54
SECTION 6
PRIVILEGED COMMANDS
Certain command functions can only be used by privileged users.
(There are several privileges which may be associated with a PPN.)
Most privileged functions are carried out by programs and are
documented with those programs, but a few monitor commands themselves
take on special meanings when used in a privileged way. Most users
do not require any privileges; if you think you need to be assigned
any, see a system programmer, who will disagree.
The DETACH command, if given with a device name argument by a user
with the DEV privilege, makes the specified device unavailable to
users. This is intended to be used for hardware maintenance. The
ATTACH command with device name argument, also privileged, assigns a
detached device to the job giving the command; it becomes generally
available when the job deassigns it. These commands also accept
pseudo-device names of the form DDn, to make Data Disc channel n
unavailable.
The KILL command can be used to kill any job by a user with the KIL
privilege.
The TALK command is always successful, even to a terminal in user
mode, if given by a user with the TLK privilege.
The EDDT command can be given only from the PDP-10 console Teletype.
It stops timesharing and starts Executive DDT to allow debugging of
the monitor.
Appendix 1 55
APPENDIX 1
RPG
RPG, the Rapid Program Generator, is a program which interprets
certain monitor commands for editing, compiling, and loading
programs. It simplifies these tasks by expanding concise user
commands into the different forms used by editors, language
processors, and the LOADER. Without user intervention, RPG will run
the correct language processors to translate the user's files. It
will run the LOADER to create an executable core image containing the
user's program. The monitor provides several commands that run RPG.
This appendix is excerpted from the RPG manual, SAILON 51.1, on the
disk as RPG.REG[S,DOC]. It does not include the section on the
internal workings of RPG.
RPG knows about certain standard processors. These are the editors:
TV, SOS, and TECO; the compilers: SAIL, FAIL, F4 (FORTRAN), MACRO,
OSAIL (Old SAIL), NSAIL (New SAIL), and PUB (Document Compiler); the
debuggers: RAID and DDT; and the LOADER.
The E editor includes within it the RPG functions, so its "RPG"
commands run E directly rather than via the RPG program.
Nevertheless, the E commands are included here because they are
operationally similar.
The RPG commands are divided into three classes, EDIT, COMPILE, and
CREF.
EDIT-Class Commands
There are eight EDIT-class commands, two for each of the four
commonly used editors:
Command Name
Program Create File Edit File
SOS CREATE EDIT
E CETV ETV
TV CTV TV
TECO MAKE TECO
Appendix 1 56
CREATE, CTV and MAKE
These commands take a file name as the argument. RPG will call the
editor and tell it to initialize the file of that name. For CREATE,
SOS is started in line insertion mode. The TV editor will initialize
the file and allow the insertion of text on page 2. TECO (the MAKE
command) will be initialized to write on the specified file.
EDIT, TV and TECO
These commands take a file name (with optional project-programmer
name) as the argument. RPG remembers the name of the last file that
was edited (except that LOGOUT makes RPG forget). If an EDIT-class
command is given without an argument, RPG will use the argument that
it remembered.
If no extension is specified in the argument and no file with the
given name and blank extension can be found, then the user's
directory is searched for any file with the given name and one of
several standard extensions. The standard extensions are searched in
the order: NSA, OSA, SAI, FAI, MAC, F4, LST, WRU, PUB, and CMD.
If a user specifies a disk area other than his own current (logged in
or aliased) area, then the edited file will be put on his disk area
and the source (from the other area) will not be changed.
The editors have a read-only mode in which files may be examined by
using editor commands, but not changed. To get read-only mode type
/R after the file name in the edit command (e.g., TV M.SAI/R).
Read-only mode in SOS prohibits any commands that would change the
file. In the display editors, the mode may be changed from read-only
to read-write at any time. In TV, there is a no-directory mode,
specified by the switch /N.
CETV and ETV
These are the create and edit commands for the E editor. They do not
run the RPG program; instead, E itself simulates the RPG functions.
There are several differences between these and the other editor
commands:
1. E saves its edit commands not on the disk, but in a TMPCOR file,
i.e., a simulated file kept in core by the monitor until the job is
logged out. The LOGOUT program copies these files to the disk if you
use the RPGSAV option.
2. The command can include /nP and /nL switches for page and line
numbers as well as /R and /N. E saves its position in the file when
it exits, so a later ETV command with no argument will continue the
edit from the same point in the file.
Appendix 1 57
3. E allows you to edit a file in another dsk area by including the
PPN in the command, rather than copying the file to your own area as
RPG does for the other editors. Also, since TMPCOR files belong to a
job rather than a PPN, changing your alias does not change the saved
edit command which E finds.
COMPILE-Class Commands
The COMPILE-class commands are an abbreviation for a series of
commands to compilers (and other language processors) and the LOADER.
Here is a brief summary of the commands:
REL file Core Image Debugger Execution
COMPILE yes
LOAD yes yes
PREPARE yes yes yes
EXECUTE yes yes starts the user program
TRY yes yes yes starts the user program
DEBUG yes yes yes starts the debugger
PUB document compilation
The COMPILE-class commands, like the EDIT-class commands, remember
their argument list. If the user does not supply explicit arguments,
RPG uses the same arguments that were used in the previous
COMPILE-class command. Arguments are remembered in the disk files
QQSVCM.RPG (COMPILE-class) and QQSVED.RPG (EDIT-class), which are
usually deleted by the LOGOUT program. RPG actually remembers the
last COMPILE-class command that had explicit arguments; both the
command and the arguments are remembered. This is useful because all
the editors allow an exit-and-go command (in SOS, the G command; in
TV and E, the CONTROL-X G command; in TECO, the EG command). The
exit-and-go feature runs RPG in a special way which makes RPG
re-execute the command that it remembered.
PUB, the Document Compiler, is a special case: it does not translate
computer programs into REL files, but documents into DOC files. The
PUB command is used to compile a PUB document; the other
COMPILE-class commands do not recognize PUB. The PUB command is
remembered in a QQSVCM.RPG file, like the other COMPILE-class
commands.
COMPILE
The argument should be one or more file descriptors, separated by
Appendix 1 58
commas. RPG will cause the appropriate translator to be used for
each of the files. The translator that is used is determined by the
the extension of each file. The standard extensions and translators
are:
Extension Translator
SAI SAIL
F4 FORTRAN
FAI FAIL
blank FAIL
MAC MACRO
OSA OSAIL (Old SAIL)
NSA NSAIL (New SAIL)
The decision about whether to compile is made for each file by
comparing the source file date (and time) with the corresponding REL
file date. If there is no REL file, or if the text file has been
edited since the creation of the REL file, then the source file will
be translated again. If the REL file is up to date, no compilation
is done. For example, if the files FOO.FAI, GARP.FAI, and BAZ.F4 are
to be compiled, the command: COMPILE FOO,GARP,BAZ would be suitable.
Only those files that have changed since the creation of their
corresponding REL files will be compiled.
Note that the COMPILE command does not produce a core image. To get
an executable core image one of the other COMPILE-class commands must
be used.
LOAD
LOAD does a COMPILE if necessary and then starts the LOADER. The
LOADER takes the REL files that were generated by the compilers and
combines them into an executable core image. When the LOADER is
done, it exits to the monitor. This command makes a core image but
does not start it. If any SAIL program is loaded, the LOADER will be
instructed to request the current SAIL segment.
PREPARE
PREPARE is like LOAD, but a debugger (RAID or DDT) is loaded with the
user's program.
EXECUTE
This is like LOAD, but instead of exiting, the LOADER starts the
program it loaded at its specified starting address.
TRY
Appendix 1 59
TRY is like EXECUTE, but it loads a debugger (RAID at displays,
otherwise DDT) with the user program(s). Execution starts at the
program's starting address.
DEBUG
DEBUG is like TRY except that rather than starting the user's program
it starts the debugger (RAID or DDT). The user may give commands to
the debugger to start his program, to plant breakpoints, etc.
Switches and Project-Programmer Names
Switches are allowed in COMPILE-class commands by including a slash
(/) and the switch name, e.g., /LIST. Switches allow the user to
select options. In general, a switch placed before a file name is
sticky, i.e., it applies to all the terms that follow. Switches
placed after a file name are not sticky; they apply only to the
preceding term.
Many switches have inverse switches that undo the effect of the
switch. For example, /NOLIST is the inverse of /LIST. The inverse
setting is the default for all switches.
A project-programmer name (PPN) may be included with each file name
in the command. The PPN specifies the disk area from which the file
is to be read. The PPN, enclosed in square brackets ([ and ]),
usually follows a file name; in this case the PPN applies only to the
preceding term. If a PPN appears before a file name, then that PPN
is sticky for the rest of the command until another sticky PPN is
seen.
A name followed by a colon (:) is a device name (which is sticky).
Switch Function Summary
/COMPILE Force re-compilation without checking the dates
of REL files
/CREF Request a cross-reference listing
/DUMP Force the LOADER to make a DMP file of the core
image
/FAIL Use FAIL for this term
/FORTRAN Use F4 (FORTRAN) for this term
/FORWARD Prevent RPG from looking for this file to decide
if the REL file is up to date
/LIBRARY Force the LOADER to search this term as a library
/LIST Request a listing file
/MACRO Use MACRO to translate this term
Appendix 1 60
/MAP Request a LOADER map of global symbols
/NODUMP Force re-loading without checking the dates of
DMP files
/NOLOAD Prevent a loading request for this term
/NOSAISEG Load SAIL programs with the SAIL library instead
of the SAIL segment
/NONSTANDARD Specify a nonstandard processor
/NSAIL Use NSAIL (New SAIL) to translate this term
/OSAIL Use OSAIL (Old SAIL - 1971 version) to translate
this term
/REL Force loading from the REL file without
considering the source files
/SAIL Use SAIL to translate this term
Switch Names and Abbreviations
Switch name Abbreviation Inverse name Abbreviation
/COMPILE /COM /NOCOMPILE /NOC
/CREF /C /NOLIST /N
/DUMP /D
/FAIL /F
/FORTRAN /FORT
/FORWARD /FORW /NOTFORWARD /NOT
/LIBRARY /LIB /NOSEARCH /NOSE
/LIST /L /NOLIST /N
/MACRO /M
/MAP
/NODUMP /NOD
/NOLOAD /NOLO /LOAD /LO
/NONSTANDARD /NON
/NOSAISEG /NOSA
/NSAIL /NSA
/OSAIL /OSA
/REL /R
/SAIL /S
Generation of REL Files
The simplest way to translate several programs is to create them with
file extensions which define the processor to be used; then give a
single COMPILE command with all these names separated by commas. (It
is usually a bad idea to have two programs in different languages
with the same file name, e.g., FOO.SAI and FOO.FAI.)
RPG does not require file extensions to be typed explicitly. For the
Appendix 1 61
command COMPILE FOO, RPG will look for any file named FOO and check
its extension. If a file FOO is found that does have one of the
standard extensions, RPG will select the corresponding translator.
If a file does not have a standard extension, RPG can be told which
translator to use by giving that information in the command string.
For example, to translate the file SINE with the SAIL compiler use
the command: COMPILE SINE/SAIL. If there is a list of several file
names, the processor name may be used after each file name, or before
the entire list. For example,
COMPILE FOO/SAIL,BAZ/SAIL
is the same as
COMPILE /SAIL FOO,BAZ
The command:
COMPILE /SAIL SINE,IOPACK/FAIL,TJ
would use SAIL on SINE and TJ, and would use FAIL on IOPACK. The
default processor is initially FAIL. Caution: if a file does have a
standard (non-null) extension, RPG cannot be convinced to use some
other processor.
Every time a switch like /FORTRAN appears in front of a file name, it
changes the normal mode. For example,
COMPILE /SAIL SINE,COSINE, /FORTRAN TANGNT,COSEC
would cause SINE and COSINE to be translated by SAIL, and TANGNT and
COSEC to be translated by FORTRAN.
The compilations that are requested will not take place if there
already exists a REL file whose creation date is more recent than all
of the files used in producing that REL file. If any source file is
edited, it will have its creation time and date updated so that it
will force re-compilation. A user may force re-compilation, if he
wishes, by including /COMPILE in the command line. That is,
COMPILE /COMPILE FOO
will compile the file FOO regardless of its creation date. Date
checking can be forced again by including /NOCOMPILE in the command
line. Including /REL will cause RPG to forget about looking for
source files at all and just proceed to generating a core image from
the existing REL files.
Appendix 1 62
Concatenation of Source Files
It is often desirable to break up a program into two (or more)
separate files which have only one END statement at the end of the
last file. One reason for breaking up a program is because it is
very long, and it would be inconvenient to keep and edit such a large
file. Another reason for separating a program is to allow a portion
of the program text to be shared. Several files can be processed
together as one big translation by separating their names with plus
signs (+) rather than with commas. For example,
COMPILE DATA+PROGRM
treats the files DATA and PROGRM as if they were one large file and
produces one relocatable binary file, PROGRM.REL. A maximum of 40
files may be combined in this way. RPG will not allow concatenation
of source files that specify inconsistent processors.
Normally, the REL file will have the name of the last file in the
command string; it can be given some other name by putting the
desired name and an equals sign (=) at the front of the argument
list, e.g.,
COMPILE FOO=SYMS+PROGRM+IOPACK
would do one translation as if SYMS, PROGRM, and IOPACK were one
large file and produce relocatable binary output on the file FOO.REL.
Occasionally, a header file must be assembled with several other
files, e.g.,
COMPILE ACUMS+SINE,ACUMS+COSINE,ACUMS+TANGNT
The brokets (< and >) feature allows this to be done more simply:
COMPILE ACUMS+<SINE,COSINE,TANGNT>
Producing Symbolic Listings
Assembly listings have the original code as it appears in the file
plus the octal values that the code represents with the relative
locations that the octal values go in. Assembly listings can be
generated by means of a /LIST or /CREF (cross-reference listing)
switch in the command. The /LIST switch will produce a file with the
same name as the REL file and extension LST. Such a file may be
Appendix 1 63
spooled or typed. Note that COMPILE FOO/LIST will not compile
anything if a current FOO.REL exists. This is another instance where
the /COMPILE switch is useful. The /LIST may be used as a sticky
switch or it may be applied to particular terms. The inverse switch
is /NOLIST. (Processors other than the assemblers may also produce
listings.)
If the /CREF switch appears, instead of /LIST, it generates an
expanded listing that includes a list of all the symbols
(identifiers) used in the program and the line numbers on which each
symbol appears. This is called a cross-reference listing. These
listing files cannot be printed directly. Instead, they must be
processed by the cross-reference lister program, CREF. This is done
by the CREF command (see page 68). Note: not all the processors can
produce a cross-reference listing. Consult the appropriate manual to
find out if a given processor is capable of generating one.
Command Files
COMPILE-class commands are sometimes too long to fit on one line, or
are too complex to be typed correctly every time. To solve this
problem, arguments can be read from a file. The text contained in
such a file is read by RPG as if it had been typed as the arguments
to a command.
The command file may contain any features available in a
COMPILE-class command. Also, if the command is too long to fit on
one line of the file, a semi-colon (;) placed at the end of a line
signifies that the argument list will continue on the next line of
the file.
To use a term as a command file write an at sign (@) before the
command file name, e.g., LOAD @SYS. The command file SYS might look
like the following file which is used to assemble the entire
operating system:
%S%B SYSTEM=OUTER(XLR)+JOBDAT+ALLDAT+IMPDDB;
+LOWCOR+PARSER+SYSINI+COMCSS+CLKSER+UUOCON+SCHEDU+CORE;
+DSKSER+DSKINT+DTCSER+MTCSER+XGPSER+FBPACK;
+IMPCLK+IMPREG+IMPUUO+IMPINT;
+LPTSER+PTPSER+PTRSER;
+DPYSER+TTYSER+LINED+SPWSER+TVSER+ADSER+MAIL;
+PATCH+SYSMAK+DDT+ONCE
There are two things in this command file which have not yet been
explained, LOADER switches (see page 68) and translator switches
(see page 66).
Appendix 1 64
Generating Core Images and DMP Files
The commands EXECUTE, DEBUG, LOAD, PREPARE, and TRY each generate an
executable core image. Core images are made by translating source
files (as in the COMPILE command) and then running the LOADER, which
takes the REL files and produces a core image from them.
With DEBUG, PREPARE, and TRY, the LOADER is instructed to load a copy
of RAID (or DDT if the user is at a Teletype) and the program symbol
table with the core image.
If /MAP is included in the command string, the absolute values of all
the global symbols are listed in a legible way on the file MAP.MAP.
A disk dump of the core image can be made by including /DUMP in the
command string. The dump file will have the same name as the first
REL file and extension DMP. The DMP file can be given some other
name by putting the desired name and a left arrow (←) in the command
string. For example, the command
TRY DUMP←SINE,COSINE/DUMP
translates the programs SINE and COSINE, producing SINE.REL and
COSINE.REL. The LOADER is run. Because the TRY command requests a
debugger, RAID.REL (or DDT.REL) is loaded from the system area.
SINE.REL and COSINE.REL are loaded next. Then the LOADER makes a
dump copy of the core image in the file DUMP.DMP and starts the
program.
If there already exists a DMP file of the right name and if it has a
creation date more recent than those of the source files, no loading
will be done. Instead, the dump copy itself will be called in.
Reloading may be forced by the /NODUMP switch in the command line.
Both an equals sign and a left arrow may be included in a command
string. For example:
COMMAND REL DMP
TRY SINE+COS/DUMP COS.REL COS.DMP
TRY DUMP←SINE+COS/DUMP COS.REL DUMP.DMP
TRY DUMP=SINE+COS/DUMP DUMP.REL DUMP.DMP
TRY FOO←DUMP=SINE+COS/DUMP DUMP.REL FOO.DMP
Appendix 1 65
Library Searches
Several REL files may be combined into a library. A library is a
special REL file from which routines may be independently selected.
Library files are made by combining REL files together using the
FUDGE2 program (which is described in DEC documentation). For
example, sine, cosine, and tangent routines might be combined into a
trig library, TRIG.REL. Then, if a particular program used just the
sine routine, instead of loading the entire trig package it would be
able to select only the sine routine. The LOADER will search library
files and load only the programs that are needed. The /LIBRARY
switch after the name of a library file tells RPG to request this
LOADER feature. The /LIBRARY switch may also be used as a sticky
switch; its inverse is /NOSEARCH. Suppose there is a program called
NLT which uses the sine routine that was included in TRIG.REL. Then
the command LOAD NLT,TRIG/LIBRARY will cause NLT to be loaded and
TRIG to be searched. The LOADER notices that NLT requires SINE.REL
and searches TRIG.REL for it. Suppose another program, XLT, requires
routines from two library files, TRIG.REL and IOPACK.REL, and must be
loaded with another program LT. Then any one of the following
commands could do this:
LOAD XLT,LT,/LIBRARY TRIG,IOPACK
LOAD /LIBRARY XLT/NOSEARCH,LT/NOSEARCH,TRIG,IOPACK
LOAD XLT,LT,TRIG/LIBRARY,IOPACK/LIBRARY
Programs which use library files must be placed before the library
file names in the command. This is because the LOADER cannot know
what routines to extract from each library until it has loaded the
programs that require library routines.
Nonstandard Processor Features
Processors other than SAIL, FAIL, FORTRAN, PUB, or MACRO may be
specified by using the non-standard processor feature. The switch
/NONSTANDARD DEV:NAME specifies a nonstandard processor. In this
switch, DEV (assumed to be DSK, if absent) is the device name on
which to find NAME.DMP, the core image file of the nonstandard
processor. Once the /NONSTANDARD switch is used, RPG will recognize
the extension NAM (i.e., the first three letters of the processor
name) and the switch /NAME (the processor name) in the command line.
A project-programmer name may be used in specifying the non-standard
processor.
For example, for a user to translate the program SINE using a
Appendix 1 66
processor named PROC on his disk area, he could use the command:
COMPILE SINE/NONSTANDARD PROC.
When a standard processor is used, it is known that it will take a
text source file and produce a binary REL file, and possibly a text
LST file. With nonstandard processors there is no such guarantee. A
nonstandard processor may process a text file into a new text file
which becomes input to a standard processor. It is possible to
specify all these functions in a single COMPILE-class command.
If a nonstandard processor generates a text file instead of a REL
file, loading must be inhibited. The /NOLOAD switch accomplishes
this. The /NOLOAD switch must be used for each term that does not
produce a REL file (except in the COMPILE command, which does no
loading anyway). The inverse switch is /LOAD.
Suppose the preprocessor, NSP, translates the file BAZ into a file
FOO which is a FAIL program. FOO must be translated when NSP is
done. Also, MAIN and SINE must be translated and loaded with FOO.
The command:
LOAD FOO=BAZ/NONSTANDARD NSP/NOLOAD,MAIN,SINE,FOO/FORWARD
will do all of this. The /FORWARD switch is necessary because the
file FOO does not exist at the time the command is given. Including
the /FORWARD switch prevents RPG from looking for FOO; RPG will
assume that FOO magically appears before FAIL is called. The inverse
switch is /NOTFORWARD.
The processor DO (see Section 5.7) is another example of a
nonstandard processor. The DO program writes QQSVCM.RPG to force the
exit-and-go command from the editors to run DO again.
Translator Switches
Switch names enclosed in parentheses "(" and ")" are passed directly
to the translator. The documentation for each of the translators
explains what switches are available. The switches passed in this
way appear on the source file specification. Sometimes it is
necessary to put switches on the binary or listing term. For this
purpose, there are two other switch constructions.
The construction (#1,#2), where #1 and #2 are any switch strings,
passes #1 to the binary term and #2 to the source term. The
construction (#1,#2,#3) passes #1 to the binary term, #2 to the
listing term, and #3 to the source term. For example,
Appendix 1 67
COMPILE/LIST FOO(AX,BY,CZ)
will pass the switch string "AX" to the binary term, "BY" to the
listing term, and "CZ" to the source term.
The PUB command will take PUB switches enclosed in parentheses and
pass them on to PUB.
Appendix 1 68
LOADER Switches
Switches to the LOADER may be specified in a COMPILE-class command.
A percent sign (%) followed by a letter (or a number and a letter) in
the command string of one of the LOAD, TRY, EXECUTE, PREPARE, or
DEBUG commands directly specifies that switch to the LOADER. The
following are the legal LOADER switches:
%A Causes a listing of all global symbols to be printed
%B BLT symbols down when done loading
%C Chain beginning with Common
%D Load DDT
%E Start up program when done loading
%F Enter library search mode; search all default libraries
%G Finish loading, make final links, and exit
%H Load and start RAID
%I Ignore starting address of this program
%J Use starting address of this program
%nK Adjust to n K of core when done loading
%L Search this file as a library
%M Print storage map
%N Leave library search mode
%nO Set program origin to n, absolute
%P Inhibit automatic library search for undefined globals
%Q Allow automatic library search
%R Chain beginning with resident module
%S Load symbol table also
%T Load and start DDT
%U Print current list of undefined globals
%V Load RAID
%W Load without symbols
%X Do not list all globals
%Y Load SAILOW for 2 segment SAIL programs
%Z Restart LOADER
%< Load high segment
For a full description of what these switches mean, consult the DEC
LOADER documentation. The LOADER has been modified for Stanford, so
the DEC documentation does not accurately reflect the state of the
software. Consult a wizard if necessary.
CREF Command
This command causes a cross-reference listing to be made on the line
printer. All the files made from COMPILE-class commands which used
Appendix 1 69
the /CREF switch are listed. (LOGOUT makes RPG forget which listing
files to process.) The CREF command activates RPG which in turn
activates the CREF program in a special way. The CREF program when
activated in this way reads a file that RPG wrote which contains the
names of the files to process.
Appendix 1 70
Error Messages
Obvious errors
COMMAND ERROR
TOO MANY SWITCHES
UNRECOGNIZABLE SWITCH
DEVICE NOT AVAILABLE
TOO MANY NON-STANDARD PROCESSORS
Subtle errors
UFD HASHING ERROR INCITED BY DCS
Probably you have too many files on one disk area.
TOO MANY NAMES
Your command included too many file names or non-standard
processor names.
PROCESSOR CONFLICT
A + construction specified files with different extensions,
e.g., COMPILE FOO.SAI+BAZ.FAI.
NESTING TOO DEEP
Too many levels of command files.
NO SUCH FILE
Some LOOKUP failed. A file named in the command does not
exist.
Horrible errors (A wizard should be consulted)
DISK NOT AVAILABLE
INPUT ERROR READING UFD
INPUT ERROR
NOT ENOUGH CORE
OUTPUT ERROR
Some file could not be written correctly. Possibly a file is
write protected. Otherwise you may need help.
UFD LOOKUP FAILURE
You are aliased to a non-existent disk area. Otherwise, you
need a wizard.
Appendix 2 71
APPENDIX 2
COPY
This appendix is taken from COPY.RPH[S,DOC], SAILON 61.1, the COPY
manual. The manual first describes the basic COPY command with all
possible options, and then lists the other monitor commands which run
COPY and describes their special functions.
Syntax
In this section the following rules are observed. Anything in curly
brackets is optional. Anything enclosed in brokets (e.g., <.......>)
has a syntactic definition of its own and is described elsewhere.
Upper and lower case letters are legal anywhere. A break character
is something which is not a letter, a number, or a "*". This will
become important when you try to figure out some of the error
messages. In this manual the term sticky means that the sticky item
is applicable until changed or until the end of the current command.
The basic syntax for all COPY commands is:
COPY {{<destination term>}{,<list term>}←}<source term>
"=" may be substituted for "←".
<destination term>::= <switch term>
<source term>::= <switch term>{,<source term>}
<switch term>::= {<switch list>space}<term>{<switch list>}
<list term>::= <term>
<term>::= {dev:}{filnam{.ext}}{[p,pn]}
| {<switch list>}{dev:}{[ppn]}{<switch list>}
| @<spec term>
| \<filehack selector>
| ∂{ <pn> | * }
<spec term>::= {<spec switch list> }{dev:}{filnam{.ext}}
{[p,pn]}{<spec switch list>}
<switch list>::= {/<switch>}{(<page list>)}{<switch list>}
<spec switch list>::= {/<switch>}{<spec switch list>}
<page list>::= <page term>{,<page list>}
<page term>::= N{:M}
Appendix 2 72
General Operation
COPY reads data from the logical file(s) indicated by the source
term, performs any operations requested by the switch term(s), and
writes the data on the logical file indicated by the destination
term. Any listing information goes to the list term.
Dev and p,pn are sticky in the source; that is, if they are absent,
the last one specified is used. The default device is DSK and the
default p,pn is blank (those of the current job).
A single * may be substituted for any of the following:
filnam
ext
p
pn
A * in the source term means "all." A * in the destination term means
"same as in source file being transferred."
If filnam.ext is absent in the destination term, *.* is assumed. If
the destination filnam.ext are specified (no *'s), all source files
will be concatenated into one big file with that name.
For example:
COPY DING←FOO,BAZ
would cause a file named DING to be created on your disk area
comprised of the files FOO and BAZ from your area. If filnam.* or
*.ext is used in the destination term, the source files will be
copied onto the destination one by one with the new filename or
extension. <destination term>← may be left out and DSK:*.*← will be
assumed. For source terms with directory devices you must specify
the filnam.ext.
If you try to write on top of a file which already exists, you will
be given the option of deleting it or not. If any of the source
files you have specified do not exist, you will be informed and given
the proper option.
If a string of source descriptors is specified, the string is
executed from left to right.
You cannot write a file in two different modes (e.g.
FIL1←TTY:,DSK:FIL2). However FIL1←TTY:,DSK:FIL2/ASCII is quite
acceptable (/ASCII causes the data mode to be 0). Data modes are
explained in the UUO Manual.
Appendix 2 73
The <spec term> construct causes the scanner to continue scanning in
the file specified by the term. The term must indicate a unique
file. When end of file occurs the scanner again reads from the
terminal. No spec terms may appear in the file. Switches preceding
the "@" are treated as sticky switches. Switches following the "@"
are treated as sticky switches only while reading from the indirect
file. In a sense the indirect file is a "program block." Upon
leaving the "block" all defaults are reset to those in force just
before the "@". A device name and p,pn may precede the "@", in which
case the defaults are changed to those, but no operation is done.
The device and p,pn used in the spec term do not affect the current
defaults.
The \<filehack selector> construct for a term is a special shorthand
feature to allow commonly referenced files which would normally
require a large amount of typing to be entered quickly. The following
is a list of legal filehack selectors and what they are short for
(<pn> stands for the current programmer name right adjusted):
Filehack
Selector File selected What for?
MAIL <pn>.MSG[2,2] User <pn>'s mail file
MSG <pn>.MSG[2,2] "
MAINT MAINT.TXT[2,2] 5 day computer maintenance forecast
NOTICE NOTICE.TXT[2,2] Public mail file
RPG *.RPG[*,<pn>] All of current user's RPG files
NAP <pn>.NAP[2,2] AP news notification file
OPTION OPTION.TXT[*,<pn>] All of current user's option files
DAY DAY.TXT[2,2] Daily birthday or holiday message
The ∂{ <pn> | * } construct is another form of shorthand for
referencing MAIL files (see Appendix 4). If no argument follows the
∂ then the current user's mail file is indicated. If <pn> is used, it
means that user's mail file. And lastly, if * is used the file
NOTICE.TXT[2,2] is selected (this is the public mail file).
There is a page counter in COPY which monitors ASCII output for form
feeds. When a form feed is encountered, the counter is incremented.
If a page list is used in a term, N is taken as the starting page of
this output and M (or N if M is absent) as the ending page. Output
is only active when the counter is within the range of the page list
(e.g., LIST COPY(21) would list page 21 of the file COPY). When the
end of the first term is exhausted, control is transferred to the
next term, and so on until the right parenthesis is reached, at which
point output ceases. If more than one file is indicated, the page
list is re-scanned for each one. Page lists are never sticky.
Switches will be described in a section of their own. See /LIST for
an explanation of "list term."
Appendix 2 74
Logical device names may be used, but all switches apply to the
physical device. The following are legal physical devices for the
copy command:
DSK
UDP
DTAn
MTAn
TTYn
TTY
LPT
XGP
PTR
PTP
When the special character ↓ (↑A on Teletypes) appears, the scanner
will read the line character-by-character without interpretation
until the next ↓ (or ↑A). This is useful for allowing non-alphameric
characters to be included in filenames, e.g., editor or spooler
temporary files.
For numeric input there is always a default radix (either decimal or
octal). Sometimes, however, it is desirable to force one or the
other. A number preceded by a single quote is always interpreted in
octal. A number preceded by a double quote is always interpreted in
decimal.
Appendix 2 75
Device Peculiarities
Non-Directory Devices:
If the source device doesn't have a directory and the filename and/or
extension is specified by a *, then a generated filename and/or
extension is used. The generated filename starts out as AAAAAA and
the generated extension starts as COP. Either of these may be
changed by specifying a filnam.ext in the source term. If a star is
used, the old name is retained; otherwise it is replaced by the new
one. At the beginning of each term the filename is either changed to
that which was specified or incremented by one letter (i.e.
AAAAAZ.COP is followed by AAAABA.COP). The following example may
clear things up:
COPY DSK:*.*←MTA0:,,FOO.*,,*.BAZ
This would read 5 files from MTA0 and give them the following names:
AAAAAA.COP
AAAAAB.COP
FOO.COP
FOOA.COP
FOOB.BAZ
Disk:
If you attempt to write on an area which is protected by a password,
you will be asked the password. If you answer <cr> to the request
for a password COPY will assume that you don't know it and do the
appropriate thing. You may delete files belonging to other users
(please exercise extreme care). However, if you attempt to delete a
file on a user file directory whose programmer name is different from
the one you used when logging in, you will be asked if you are sure.
All normal file protection applies to deletions.
User Disk Pack:
COPY has all the routines to make access on a user disk pack look
like access on the regular disk. However, one must be sure to format
his user pack before trying to use it (see Section 5.8).
DECtapes:
DECtapes are assumed to be in PDP-6 format (which is the current
format our system uses). See the UUO Manual for an explanation of
DECtape formats. If the directory becomes full (more than 22 files),
you will be told which was the first file not transferred. If the
Appendix 2 76
DECtape becomes full, the file currently being written may be
incomplete. An attempt is made to detect this condition before the
transfer is initiated, but this is not always possible. In order to
write on a DECtape the OFF-WRITELOCK-WRITE switch must be in the
WRITE position. If not, you will be told to set it.
Magnetic tapes:
Mag tapes may be made to look like directory devices by use of the
/SAVE switch which is described later. All mag tape switches are
separate for input and output (see rules about switches in switch
section). This means that mag tape switches in the destination term
don't apply to the source terms.
Paper tape:
Paper tape I/O is done in binary non-checksummed mode unless
otherwise specified (see /ASCII). You should turn off the paper tape
reader when you are done. A paper tape with a jagged end may cause
spurious data to be read. It is best to tear it evenly at a fold.
Teletypes:
Since some terminals cannot reproduce the full Stanford character
set, COPY provides the standard SOS conversion for output of some
special characters on model 33 and model 35 Teletypes which are not
in full character set mode. See Appendix 13 for the SOS
representation.
On display terminals, COPY displays the number of the page being read
(if >2) if reading in mode 0, i.e., the number of form feeds seen +1.
Switches
The term sticky means "applies until the end of the line or until
changed temporarily or permanently by some means." Most switches
appearing in the destination term are carried over as sticky switches
in the source. Those switches which are separate for destination and
source terms are indicated by a star preceding the switch name.
Switches appearing in the source term are sticky only if they precede
the term with which they appear. Otherwise, they apply only to the
current term and must follow it. Only the first six characters of a
switch are significant. You are only required to use enough
characters to uniquely specify the switch.
Appendix 2 77
The following switches are now available:
SWITCH ABBR MEANING
ASCII A This forces transfers to be in ASCII.
Beware! This switch will cause SOS line
numbers to become part of the text.
ASK ASK This causes dev:filnam.ext[p,pn] to be
printed for each file under consideration
followed by a question mark. If you answer
"Y" the operation will proceed, if you
answer "G" the operation will proceed but
you will not be asked the for the rest of
the term, otherwise the file will be
skipped.
BINARY B This causes the data mode to be 13 and
forces word by word transfer of data.
BLOCKED BL This causes records to be ended on output
whenever they are ended on input.
CONVERT C This causes copy to treat the character
following a line feed and the first
character of a file as a FORTRAN control
character. Be careful, this happens on
output.
*DENSITY=n DE This sets the density in bpi to n where n
equals 800, 556, or 200. This switch is
ignored for devices other than mag tapes.
The system default density is 556.
*DSPOOL DS This switch, when used with destination or
list terms, causes the output file to be
spooled with the /DELETE switch. Output
device must be disk. This switch is
illegal in source terms.
DUMP DU This causes each 36 bit word from the
input device to be converted to the ASCII
representation of the octal number it
represents and to then be sent to the
output device. The following format is
used. A "word number" is sent to the
output device which indicates which word
in the file is the first word in this row.
Then 8 data words are transferred. Then a
<cr><lf> is inserted. If desired, a "page
list" may be used for /DUMP; however, the
values are those of word addresses in the
file instead of pages.
*EVEN EV This sets mag tape transfers to even
parity.
EXTRA=n EX Whenever a line feed is seen n extra line
Appendix 2 78
feeds are put out; n must be an unsigned
decimal integer. If n=0 line feeds are
converted to a 177 followed by a 21; this
inhibits form ejection at page boundaries
on the line printer.
EXTRA≡n EX (Note "≡" not "=".) This switch, used with
the XGP only, sets the inter-line spacing
to n raster units.
FAST F All the names specified by the source term
are listed (no size or other info). This
switch is therefore much faster than
/SEARCH.
FONT#n=file FON This switch is used when copying to the
XGP to select a font. Font number n
(default is 0) is taken from the specified
file. The file specification can include
any of filename, extension, and PPN; the
defaults are FIX25.FNT[XGP,SYS].
FOONLY FOO This switch is used to produce a file
directory listing meant to be read by
various programs rather than by a human
being. The switch name derives from the
fact that the switch was created for the
benefit of layout and drawing programs
used in the design of the late, lamented
SUPER FOONLY computer.
FULL FU This forces all the directory information
to be printed under /SEARCH even if no
list term was specified. This switch does
not automatically imply /SEARCH.
GTOTAL G At the beginning of the execution of a
term the term is printed. At the end of
the term, a line is typed of the form
TOTAL= x.x n BLK pp%
where x.x is the size of the file in K and
tenths (if the file is smaller than 1K,
the size in words is typed instead), n is
the number of disk blocks allocated to the
file, and pp is the percent of the
allocated space which is actually used.
This switch implies /SEARCH.
HEADER H This causes a header to be put out at what
would be the top of each page on the line
printer. The header looks like this:
DATE TIME FILNAM.EXT P,PN PAGE N-M
Appendix 2 79
The current date and time are used, N is
the logical page number (number of form
feeds seen plus one), and M is the
physical page of that logical page.
IGNI IGNI This causes input errors to be ignored (no
message).
IGNO IGNO This causes output errors to be ignored.
KILL K The input file is deleted after the
transfer is finished, even if the output
filename is the same as the input
filename. If the 200 bit in the file's
protection code is on, COPY asks before
deleting the file.
LIST L This causes the names of the files
transferred during that term to be listed.
If the input device is the disk the [p,pn]
are also listed. Non-directory devices
will obviously list nothing. The output
will go to the "list term". If the list
term is absent, the output will go to your
terminal.
*MLENGTH=nnnn M This allows the user to specify
nonstandard length records for mag tape
I/O, where nnnn is a 1 to 4 digit number
interpreted in octal which specifies the
number of data words per record.
NONUMBERS N This deletes line numbers from files that
have them. This forces an ASCII mode
transfer; in fact, /NONUMBERS can be used
on any ASCII transfer. Do not use this
switch on anything but text files or you
will be sorry.
ODD OD This sets mag tape transfers to odd
parity. This mode is standard and is the
default option.
OPTIMIZE OP This forces COPY to treat the file as one
produced by SOS, and to pack it by
allowing lines to span a record break as
long as line numbers are not the last word
of a record. SOS will read an OPTIMIZEd
file, but will not write a record ending
with a partial line. A file which cannot
be read by SOS because of line numbers or
page marks at the ends of records will be
"fixed" by this switch.
PROTECTION=nnn P This causes the output file to have the
protection nnn, where n is a digit from 0
to 7. If no protection switch is
specified, the protection of the input
Appendix 2 80
file is used (for non-disk input 000 is
used). All three n's must be present.
This switch applies only to disk output.
When concatenating files, the protection
applicable to the first file transferred
is used.
QUIET Q This switch prevents you from getting the
message "FILE ALREADY EXISTS...." If the
output file already exists, it is deleted
without a sound. Also, if this switch
appears with /SEARCH, then only the p,pn
and the size on that p,pn are printed.
This switch also prevents being asked for
confirmation when trying to delete a file
with the 200 bit on in its protection
code.
RENAME R A rename is done on the input file with
the output file information. /QUIET
applies when the output filnam.ext already
exists.
*SAVE SA If the output device is a mag tape, four
words of directory information are
written. If the input device is a mag
tape, four words of directory information
are read and compared with the source name
specified. If they don't match, that file
is skipped and the next examined until a
match is found or the end of tape is
reached.
SEARCH SE This switch overrides all other switches.
It gives you more information than /LIST
and suppresses any transfers. Added to
the /LIST information, you get the size of
the file in 1K records (or in words if
less than 1K), the date and time it was
last written, the protection, and the
offset (see the UUO Manual). This is
preceded by a suitable heading. The whole
smear is preceded by the current date and
time. If the information does not exist,
it is not listed. If you try to SEARCH a
non-directory device, you will get a
strange answer. The output goes to the
same place as with /LIST, with the
following variation: If the "list term" is
omitted, the listing goes to your terminal
and the information and heading for disk
input will be truncated to FILNAM.EXT,
[P,PN], and SIZE. If /QUIET is used with
Appendix 2 81
this switch and no list term was
specified, only the p,pn and the total
size of each disk area is printed. If the
input device was the disk and the file has
been dumped by DART, the date and tape ID
of the last dump are printed, followed by
">" if it was dumped twice or more.
*SPOOL SP This is the same as /DSPOOL except that
the /DELETE switch is not used in spooling
the file.
TITLE T This causes a "title page" to be put out
in large block letters followed by a form
feed. The title is of this form:
FILNAM.EXT
P,PN
TIME
DATE
The date and time are when the file was
last written. For non-directory devices,
<device name>: is printed in place of
filnam.ext and p,pn.
Appendix 2 82
Monitor Commands
The following is a list of the monitor commands which use COPY and
how they work. The syntax is the same as for COPY.
COMMAND EFFECT
DELETE This deletes all the files specified by the source
term, and types the space reclaimed as with the
/GTOTAL switch. If the 200 bit is on in the file
protection key, you will be asked if you really want
to delete the file (/QUIET overrides this feature).
The destination term is interpreted as the list term.
The list term is therefore illegal.
DIRECTORYThis gives you all or part of the file information
for the source term(s) (or *.* if no source term is
used). If /L appears anywhere in the command string
the default list device will be set to the line
printer. The destination term is treated the same as
for DELETE.
HELP nameThis types the file NAME[3,2] on the terminal. If no
argument is given or confusion arises, DIR
*[3,2]/FAST is done. This command is intended to
give information about system programs. You need not
be logged in to use HELP.
LIST This sets the default output device to the line
printer and turns on the /HEADER switch.
PRINT This sets the default output device to the line
printer and turns on the /NONUMBERS and /TITLE
switches.
RENAME This allows you to change the filename, extension,
p,pn, and protection of a file. The format is
newname←oldname. Use /PROTECTION= to change
protection.
TRANSFER This copies files from one place to another and
deletes the source files.
TYPE This sets the default output device to your terminal.
XGPLIST This sets the default output device to the XGP.
Examples
COPY DTA4:←*.*
This would cause all the files on your disk area to be written on
DTA4.
Appendix 2 83
COPY ←DTA4:*.*
This would cause all the files on DTA4 to be written on your disk
area.
COPY <filnam.ext>/NONUMBERS
This would delete sequence numbers (if any) from the file indicated.
COPY [2,RPH]←*.*[1,RPH]
This would cause all the files on 1,RPH to be copied onto 2,RPH no
matter who you are logged in under (subject to file protection
failure).
TYPE <filnam.ext>
This would cause the specified file to be listed on the terminal you
are logged in on.
LIST <filnam.ext>(2)/NONUMBERS
This would cause page 2 of the specified file to be listed on the
line printer with headers and without line numbers.
DIR LPT:←*.RPG[*,*]
This would cause the filnam.ext, [p,pn], size, etc. for all files in
the world with the extension RPG to be listed on the line printer.
COPY FOO←TTY:,FOO/ASCII
This would allow you to add text at the beginning of the file FOO
(/ASCII is mandatory).
RENAME FOO/PROTECTION=077
This would change the protection of the file FOO to 077 without doing
a transfer.
PRINT FOO
This would cause the fole called FOO to be listed on the line printer
without line numbers and with a title page.
DIR[*,RPH]/QUIET
This will tell RPH the size of each of his areas without printing the
filenames and other information.
Appendix 2 84
COPY TEMP←↓$ED$09↓.TMP
This copies the file $ED$09.TMP into TEMP so that you can edit it.
(These names are created by SOS.)
DELETE @DEL
This would use the file DEL as a list of files to be deleted. This
method is very good for "cleaning" your area.
Appendix 3 85
APPENDIX 3
SPOOL
This description of the SPOOL commands is taken from the SPOOL
manual, SPOOL.REG[UP,DOC].
Spooling provides a method of producing line printer listings of
files without the usual disadvantage of tying up a user's job while
the listing is actually being done.
To use the spooler, a user must create commands for it. A command is
the name of a file to list, and control switches. Spooler commands
are created by the monitor commands SPOOL and XSPOOL.
As an example of spooling, the monitor command
SPOOL SPOOL.REG[UP,DOC]
will cause the LPT spooler to list the file SPOOL.REG[UP,DOC].
Spooled listings are preceded by a title page (except see /NOTITLE
below), used to make it easy to separate different listings. This
title includes the file identifier, the name of the requestor and his
project-programmer name, the current date and time, and the date and
time when the file was last written. Programmer names are read from
the file FACT.TXT[SPL,SYS]. Project names (of which there are few)
are read from the file XFACT.TXT[SPL,SYS].
In the discussion below, "SPOOL" is used to mean either the command
SPOOL or the command XSPOOL, except as noted. SPOOL makes requests
for the LPT spooler; XSPOOL makes requests for the XGP spooler.
To have the spooler make a listing the user must tell the spooler
what file(s) to print. This easiest way to tell the spooler what to
do is by the monitor command SPOOL. This command consists of the word
SPOOL followed by the name(s) of the file(s) to be listed. File
names are separated by commas. Each file name may be followed by
switches, explained below. The program SPOOL will send commands to
the spooler.
Files to be spooled are specified in the conventional way, by file
name, extension, and optionally project-programmer name.
Asterisk, *, may be used to allow matching of any file name,
extension, project name, or programmer name. (RPG, DMP, and REL
files will not be matched by * in the extension).
Appendix 3 86
Switches are allowed either preceding or following the file name.
Switches that precede the name are sticky and will be applied to
subsequent names. A switch consists of a slash, the switch name, and
sometimes, a parameter. For example, /REPEAT=5.
The following switches are available. Note that most switches occur
in two senses (e.g., delete and nodelete). This allows an explicit
switch in some term to override a sticky switch.
Appendix 3 87
Switch Action
DELETE DELETE this file after printing. The file protection
NODELETE of this file must be low enough so that the spooler
can delete it. The file must belong to the requestor
(alias not allowed).
NONUMBER Omit SOS line numbers from the listing. "N" is an
NUMBER accepted abbreviation for NONUMBER.
FORTRAN The first character of each line is interpreted as a
NOFORTRAN FORTRAN carriage control character.
LPT100 The spooler will open the LPT in mode 100, instead of
LPT0 the usual mode 0. (This changes a few character codes.)
HEADING Print a page heading at the top of each page. "H" is
NOHEADING accepted as HEADING. HEADING is the default for all
files, except:
LST or DOC extensions,
any file from any area with programmer = DOC.
The heading includes date, time, filename, and page
numbers.
TITLE Precede the listing with a title page. TITLE is
NOTITLE the default for all files.
NARROW Center the title page to fit an 8.5 inch wide page.
NONARROW
RECOPY Copy the file to [SPL,SYS] and list the copy. This
NOCOPY allows the file to be edited while the listing is in
progress.
REPEAT=n Make n copies of the listing. (REPEAT is NOT sticky).
EXTRA=n Insert n extra line feeds in the listing after every
line feed in the file. (EXTRA is NOT sticky).
DUMP Octal listing. Data will be printed as octal full
NODUMP words. (OCTAL is an equivalent switch.)
NOFF Each line feed in the file is translated to '177&'21
FF which causes single spacing with no form-feed between
pages.
NOWARN Suppress "spooling done" message when listing is done.
WARN
ASK Before making the spool command, SPOOL will type the
file name and wait for the user to respond with "Y" to
spool the file. (This is useful with *.* terms).
HOLD=hhmm The listing will be held in the queue until the time
specified by hh hours, mm minutes. (24 - hour time is
assumed.) If hhmm is prior to the current time, hhmm
tomorrow is assumed.
MODE=n Open the file in mode n (n is octal).
Appendix 3 88
Delayed Listing
Usually requests for spooled listings will be processed as rapidly as
possible. Under some circumstances this may not be desired. For
example, a long listing impacts the normal operation of the system by
making the line printer unavailable during its duration. The spooler
allows users to delay such listings until a time of minimum loading
(e.g., 0500) when the unavailability of the line printer is less
likely to interfere with other users.
If the construction /HOLD=hhmm appears in a command line then hhmm is
interpreted as the (24 hour) time of day when the listing should
actually be sent to the line printer. In the example below, 1730 will
be interpreted as 5:30 PM.
Example:
SPOOL SYSTEM.LST[S,SYS]/HOLD=1730
If the time specified is smaller than the current time, it is
interpreted to mean, "list the file tomorrow at the time specified."
That is, if at 10PM you give the command:
SPOOL BAZ.FAI/HOLD=400
then the listing will occur in six hours.
Page Selection
You may follow a file name by a list of ranges of pages that you want
listed. The list must be parenthesized. For example:
SPOOL FOO.SAI (1,7,5:8)
will cause page 1, page 7, and pages 5 through 8 inclusive to be
listed. Page ranges are never sticky.
In octal dump mode, this page range list is used to specify a word
range to list.
Appendix 3 89
Multiple Copies of a File
The REPEAT switch (/REPEAT=n) is accepted by SPOOL. The effect is to
interpret n as a decimal number and to list that many copies of the
file. Multiple copies are spooled as usual, except that the two
pages of heading that normally precede a file (except if the /NOTITLE
switch is used) are suppressed on the second and subsequent copies of
the file.
Appendix 3 90
XSPOOL Special Features
The XSPOOL command is quite similar to the SPOOL command. The XGP
has greater flexibility than the line printer, so more parameters can
be specified in the XSPOOL command.
The following switches are legal only in the XSPOOL command:
FONT#n=f n is a number from 0 to 15 decimal. f is a file
name. The XGP spooler will use the font named f as
font n when spooling. If #n is omitted, n=0 is
assumed. Up to 16 font select switches are
permitted. The defaults for filename, extension, and
PPN are FIX25.FNT[XGP,SYS].
LMAR=n Set left margin to column n. Columns in the XGP are
numbered from 0 to 1699 (approximately). The left
margin is the column which the carriage return
character selects.
RMAR=n Set right margin to column n. If the XGP is going to
write a character that exceeds this margin, a new
line will be started.
TMAR=n Set the number of blank scan lines between the top
edge of the page and the first line of text.
BMAR=n Set the number of blank scan lines between the bottom
of the text and the bottom edge of the paper. (The
monitor interprets BMAR=0 to mean no paper cutting.)
PMAR=n Set the number of scan lines in the page body. Text
is written inside this area. (The monitor interprets
PMAR=0 to mean that the end of a page body is
signalled only by a form feed in the file, for
variable-length pages. This is true only if BMAR≠0.)
XGP The first page of the file is taken as font and
margin commands, preceded by slashes as in the
command line. Only the special XGP spooler switches
(the ones in this table) are allowed. Carriage
returns are ignored. If the first page of the file
is a TV/E directory, the second page is used for the
commands. The command page is not printed. A file
extension of .XGP also invokes this feature.
XLINE=n Set the minimum interline spacing to n scan lines.
More peculiarities:
If any FONT select switch specifies some font number other than 0, no
/HEADING switch will be assumed unless it is explicit.
Page headings will occur in font#0. Whatever font was in effect
before the heading line will be reinvoked before any further
processing. The title page, if present, will be made in font#0.
Appendix 3 91
QSPOOL Command
The QSPOOL command starts the SPOOL program in a special way. QSPOOL
reads the directory of [SPL,SYS] and interprets the contents of the
SPX and XSP (spooler command) files. Essentially, it displays the
queue of files to be printed.
The queue is based on a priority scheme. The priority of a spool
request is determined by
(time in minutes since spool request, +1) / (file size in records)
Requests are processed in the order of decreasing priority.
The QSPOOL command may be given without logging in.
UNSPOOL Command
UNSPOOL is a monitor level command that invokes the program SPOOL.
If you run UNSPOOL, it will display all the spooler requests that you
(your PPN) have requested, and it will allow you to delete any of
them. If you delete a request which hasn't been seen by the spooler,
then nothing special happens since the spooler is not yet aware of
the command, so it won't be missed. If it happens that the spooler
is already processing your commands, then the listing in progress
will be purged.
If you log in as SPL,SYS and run UNSPOOL, then not only are you
allowed to purge any command file that is either in progress or
pending but you also can change the spooler behavior in the following
ways:
1. You can cause the present listing to be purged.
2. You can cause the present listing to be started over.
3. You can cause the spooler to hold the queue and release the LPT
immediately before starting the next file.
4. You can release the queue from the state induced by holding it.
Appendix 4 92
APPENDIX 4
MAIL
This appendix describes the use of the MAIL and SEND monitor
commands, which are used to send messages to users. The SEND command
sends the message to the user's terminal, if he is logged in, and
optionally may also (or instead, if he isn't logged in) send it to
him as MAIL, so it will be seen on login. The next section describes
the REMIND command, for automatic delayed messages, and the LATER
command, for automatic delayed program execution. Finally, the RCV
command for editing mail files is described.
The information in this appendix is taken from the files
MAIL.BH[UP,DOC] and RCV.BH[UP,DOC], the manuals for the MAIL and RCV
programs.
MAIL, SEND, and GRIPE Commands
The basic format of the MAIL command is
MAIL <switches> <destination list> <message>
and that of the SEND command is
SEND <switches> <destination list> <message>
Another command, for complaining about system bugs, has the format
GRIPE <message>
This is a version of MAIL which is directed to a special system area.
The only switches allowed with the MAIL command are /D and /U. The
/D switch causes a list of the destinations specified by the command
to be added to the message as its last line, preceded by "CC: ". If
a distribution list file is used (see below), both the file specifier
and the contents are included. Note: all specified destinations are
listed, even if invalid.
The /U switch is used if for some reason you need to send a message
to a user who is unknown to the system (has no UFD). The switch
allows this but gives a warning message and asks you for each unknown
Appendix 4 93
addressee whether you really mean it. These switches may also be
used with SEND and REMIND, in addition to the ones listed below.
There are three mutually exclusive switches which may optionally be
used with the SEND command. All have to do with the option of
mailing messages. Normally, SEND will just send messages to
terminals of logged-in users (at all terminals where logged in), but
if a destination of the form PRG (see the next paragraph) is not
logged in anywhere, the user will be given the option of mailing the
message to that prg instead. The switches /Y for yes or /N for no
will assume that response whenever the situation arises. The switch
/M for mail will always mail to all destinations on the list as well
as sending to their terminals, even if they are logged in.
Another switch used only with SEND is /W, for where, which lists on
the user's terminal the ppn, job number, job name, queue, and
terminal number of all (logged in) recipients of the message.
The destination list for MAIL can be just * , which will send the
message to the file NOTICE.TXT[2,2] so all users will see it on
login. Otherwise, it is one or more project and/or programmer names
separated by commas. The elements of the list should be in the form
PRG or [PRJ,*] or [PRJ,PRG] . Any PRJ or PRG can be a dot (.) to mean
the same as the user's project or programmer name (real ppn, not
alias). List elements may also take the form @<file specification>
(default device DSK, default extension DIS as in DIStribution list);
the specified file will be read and will replace the @ field in the
command. (Note: if the file specification does not give an explicit
extension, the given file name with no extension will be tried before
the default extension given above.) If such a file contains an @
field, the newly specified file will be read and the remainder of the
old file, if any, will be ignored. The DIS file may have a TV/E
directory and/or SOS line numbers, which will be ignored. The DIS
file may have any number of lines; destinations are separated by any
combination of returns, linefeeds, spaces, and zero or one comma.
Lines in the DIS file may contain comments started by semicolons,
which will be ignored up to a return; note that this is not true of
the command line typed at the terminal! In the @ file specification,
the notation [PRJ] may be used to mean [PRJ,.]. The notation ↓chars↓
may be used to include non-alphamerics in a file name. To make it
easier to refer to mail files as messages (see below), the filename
scanner will also accept "filenames" of the form ∂ or ∂PRG or
∂PRJ,PRG or ∂PRJ, or ∂PRJ,*. The first case uses your own logged in
programmer name, as does the ∂PRJ, form. These imply device DSK, and
default extension MSG and ppn [2,2], although extension or ppn can be
specified explicitly.
For the SEND command, there are two special forms of destinations: a
job number, and a device name followed by a colon. These special
Appendix 4 94
forms can only be used alone, i.e., with no other destinations. The
form SEND * will send the message to all logged-in users.
The message part of the command may be a one-line message, which will
be sent as is; an @<file specification> (default extension TXT); or
null, in which case the program will request a multi-line message
from the user. Any TV/E directory, SOS line numbers, and form feeds
in a message file will be ignored. If you start typing a short
message on the command line, and decide you need more than one line
after all, you can end the command line with <lf> instead of <cr> and
you will be allowed to continue the message.
Messages can only be sent to real terminals, or to pseudo-teletypes
which are connected to the IMP (ARPA users). This excludes detached
jobs and non-ARPA PTYs. SEND * sends only to those terminals at
which someone is logged in.
When a message is sent to a display terminal (III or Data Disc), the
MAIL program tries to determine whether the recipient is running some
program, such as E, which changes the normal page printer
positioning, thereby making it possible that the message will be
lost. If it finds anything unusual about the page printer, it warns
the sender of this in a message including the ppn, job name, etc. of
the recipient as in the /W output. The sender may choose at this
point to REENTER and change the SEND to MAIL. (The REENTER facility
is explained below.) SEND * does not type out these warnings.
Mail can only be sent to defined users, i.e., there must be a UFD
matching the destination prj and/or prg names (unless the /U switch
is used, as explained above, to permit it). The mail is put in the
front of the file <ppn>.MSG[2,2]. If the mail is sent to all users
via MAIL *, the program also scans the old NOTICE.TXT[2,2] file as it
copies it, and deletes any messages more than two weeks old. Also,
TV directories and SOS line numbers are deleted from the old messages
in this case.
Another special feature of MAIL * is that an expiration date may be
specified for the message. The format is
MAIL *→ <date> <message>
where <date> can be in any of the date formats allowed for the REMIND
command (see next section), except that wildcard dates are not
allowed and only the date (no time) may be specified. The date given
is the one on which the message will be deleted, i.e., it will be
seen last on the previous date. This expiration feature is
implemented by including the expiration date in the message header,
and entering (as with the LATER command described in the next
section) a request to run the program EXPIRE.DMP[RMD,SYS] on the
Appendix 4 95
specified date. This latter program deletes any expired messages.
This implementation is described because the CANCEL command (see next
section) will list the request for the EXPIRE program, so you should
expect that if you use this feature. If no expiration date is
specified, the message is still eligible for deletion after two weeks
as described above.
The check for a file directory for the specified user(s) is made
before the program asks for the message if the multi-line option is
used. If there are no valid destinations, the program exits without
doing anything else. If any destinations are valid, however, the
program continues as if only the valid destinations were specified.
(Exception: the list provided by /D includes all specified
destinations, valid or invalid.) Note: in the case of SEND, the only
check made before the message is typed in is the file directory
check. The check for the user(s) being logged in is not made until
later.
There is actually a way not-logged-in users can get messages sent by
SEND: it is possible to declare a particular terminal to be your
"home" terminal for SEND purposes. If you have a file called
OPTION.TXT[1,prg] which includes a line of the form SEND:number then
if someone sends you a message with SEND and you are not logged in, a
message will be typed on the tty specified by the above number
indicating that the message is coming, and it will be mailed as if
the sender had said SEND/Y. You can read the message by saying RCV
prg. You need not be logged in to do this, but if you are it
destroys your core image. If the message is sent to [prj,prg] rather
than prg, it looks for OPTION.TXT in [prj,prg] rather than [1,prg].
When a message is MAILed by the MAIL command (not SEND/M, etc.) to a
user who is logged in, a one-line notice is sent to his terminal
indicating that mail has arrived. This also applies to mail-only
reminders (see REMIND/M, next section).
A sample command is
MAIL BH,@FOONLY,[S,*] TEXT OF MESSAGE
which will send the message TEXT OF MESSAGE to ↓ BH↓.MSG[2,2],
↓ S ↓.MSG[2,2], and whatever users are listed in FOONLY.DIS in the
user's disk area.
Spaces may be used in all reasonable places in the command. For the
benefit of any weird people who want to start messages with a comma,
there is another syntax in which the destination list is enclosed in
parentheses. In this case spaces may separate destinations instead
of commas if you want. This syntax is also handy for SENDing to a
numeric programmer name (otherwise it would be considered a job
number) and similarly useless things.
Appendix 4 96
There is an error recovery feature for people who type in long
messages, only to discover that because of a typing error they are
trying to send it to a non-existent destination or something; to wit:
If, at the end of a multi-line message, you type
<ctrl><meta><altmode> instead of <ctrl><meta><linefeed>, the message
will not be transmitted. Instead, the original command will be
loaded into your line editor, and you can correct and re-enter it,
but if it does not include a message, the old message will be used
instead of asking for a new one. Also, the same effect can be gotten
by giving a monitor REENTER command after the program exits or you
<call> out of it. From a non-display terminal, of course, the line
editor feature is not available, but you can still REENTER and retype
the command line. Note: this reenter facility only works after the
message has been completely entered; do not <call> in the middle of
typing the message and reenter, finish the message and use
<ctrl><meta><altmode> instead.
REMIND, LATER, and CANCEL Commands
The REMIND command is used to tell the MAIL program to send and mail
your message at a specified later date and time, possibly repeatedly.
The basic syntax is
REMIND <switches> <destination list> <datime> <count> <message>
The allowable switches are /S for send only or /M for mail only. If
neither is used, the message is both sent and mailed. /D and /U may
also be used, as in MAIL or SEND.
The destination list and message fields function like those of the
MAIL command, as described in the previous section. Reminder
recipients must be users known to the system, i.e., they must have a
UFD (unless you use the /U switch as explained in the previous
section). The destination field may be omitted, in which case your
own programmer name will be used as if the destination field were the
character "."; NOTE, however, that some forms of datime (those which
start with a letter) could be confused with destinations, and if you
want to use such a form there must be an explicit destination.
The datime field may specify a date, a time, or both. The formats
allowed for dates are illustrated here:
Appendix 4 97
4/28/75 28-APR-75 APR 28, 75
4/28/1975 28-APR-1975 APR 28, 1975
4/28 28-APR APR 28
4/28/* 28-APR-* APR 28, *
*/28 28-* +3
WED WED* W W*
The forms without a year imply this year unless the date is today or
earlier, in which case next year is used. Letters may be upper or
lower case; all after the first three are ignored. The days of the
week have, for convenience, the single-letter names familiar to
Farmers' Almanac readers and former MIT students: M,T,W,R,F,S,D.
Asterisk as a month or year is wildcard; note that forms like */28
expire at the end of the current year. WED* and W* mean every
Wednesday. The +3 form is the number of days later than today, i.e.,
three days from now. Spaces may generally be used or omitted as
desired except within a word or number, except for the APR 28 forms.
Certain mixed notations such as 4/28, 1973 may work, or they may not.
If only a time field is used without a date, today is assumed unless
the time is already past, in which case tomorrow is used. The
weekday forms always imply a day between one and seven days from now
as their first or only instance, never today. Here are the formats
for times:
1423 223pm 223p
14:23 2:23pm 2:23p
0223 223am 223a 223
02:23 2:23am 2:23a 2:23
2 2am 2pm 2a
+2:23 +2: +:23 2p
A date without a time means midnight. The relative forms may only be
used without a date. Letters may be upper or lower case. There may
be spaces on either side of a colon, but NOT between the time and the
am or pm! To use both a date and a time, they must be enclosed in
parentheses and separated by spaces: (WED 3am).
The optional count field is used to specify the number of instances
of a repeated request. The format is #<number>. If none is used,
#50 is assumed (the number is decimal). The form #∞ may be used for
requests which are to live forever, but please don't leave these
around after you go away....
When a reminder which is sent more than once is sent for the last
time because its count expires, a warning to that effect is appended
to the text of the message. This does not apply to a message which
is not rescheduled because of the specified datime, such as a date of
*/10 which expires at the end of the year.
Here are sample commands:
Appendix 4 98
REMIND . (WED* 2:45P) #30 Go to 3:00 class!!
Remind me, sir, to monitor your computer usage.
REMIND * APR 15,* LAST DAY TO FILE INCOME TAX RETURNS
The messages will be both sent and mailed at the target time, unless
/S or /M is used to specify send-only or mail-only. The message
header will say "(reminder)" to distinguish it from an ordinary
message. All the features of MAIL work here, like @ fields for
destinations or messages, REENTER, etc. There are the usual
syntactic ambiguities which are not expected to affect anyone in
practice: if the first nonblank after the command name is a digit, it
is taken as part of the datime field in REMIND, as opposed to a
programmer name in MAIL or a job number in SEND.
The LATER command is used to cause delayed execution of an arbitrary
program. The format is:
LATER <filespec> <core> <datime> <count>
in which datime and count are as in the REMIND command. The filespec
determines the program to be run; the default device is DSK (the only
other device allowed is SYS), and the default extension is DMP.
Note: if no ppn is specified, the ppn used is your disk ppn (alias)
at the time the command is entered! The delayed job is given your
logged-in ppn as its logged-in ppn regardless of the ppn of the dump
file. It is run with JLOG off, i.e., it is killed if any error
condition arises. The optional core argument, if used, is enclosed
in angle brackets. It may include an initial core allocation and/or
a starting address offset, in the form <3K,+1>. The subarguments may
be in either order, and must be separated by a comma if both are
used. The core allocation argument is in decimal units of 1024
words, and the starting address offset is in octal words. If no job
slots are available at the time the job is to be run, it is not done;
therefore, if you are depending on the result you should schedule the
job for non-prime time. (If there is no job slot for the REMIND
phantom itself, it will try to schedule your job as soon after the
given time as it is itself run, but it will only try once.)
The monitor command CANCEL will run a program which will list and
selectively delete reminder requests from or to you, or all requests
if you are logged in as [RMD,SYS]. This program can also be used to
list requests without asking whether you want to delete them: after
the first request is listed, type the letter L in answer to the
deletion question and any remaining requests will be listed without
interruption. LATER requests are also listed and deleted by CANCEL.
Appendix 4 99
RCV Command
The RCV program allows MAIL messages to be selectively deleted,
listed, or saved as desired. The program is called by simply
entering the monitor command RCV. All mail files which can be
construed as being for you are offered for your perusal; if you are
logged in as [PRJ,PRG], mail files for PRG or [PRJ,PRG] are
automatically listed; mail files for [PRJ,*] or [otherproj,PRG] are
announced if they exist and you are asked whether or not you wish to
edit them. It is also possible to edit other users' mail files with
RCV by giving an argument, e.g., RCV BH; this argument can be PRG or
PRJ,PRG or PRJ, or any of those inside brackets. In this case, mail
for PRG, [PRJ,PRG], or [PRJ,*] respectively will be listed
automatically, and you will be asked about [anyproj,PRG],
[otherproj,PRG] (or just PRG), or [PRJ,anyprog] respectively. If
there is a message file exactly matching the argument (or your prg if
no argument), it will be edited before any other files. RCV * will
edit NOTICE.TXT[2,2].
RCV also allows editing of the files created by the A.P. news service
automatic notification feature; you are asked whether or not you want
to edit such a file addressed to the user whose mail you are
examining if it exists. The command RCV \ (or RCV \arg) will examine
the A.P. notices first.
It is also possible to use RCV on files not in [2,2] (such as saved
message files previously created with RCV) with a command like:
RCV #filespec
with default of DSK:SAVED.MSG in your (alias) disk area. The
conventions given below for output file specs also apply here.
** NOTE: ONCE RCV HAS OPENED A MESSAGE FILE, YOU SHOULD EXIT ONLY **
** BY TYPING "E" TO AN OPTION REQUEST, AS EXPLAINED BELOW. TYPING **
** <CALL> TO EXIT MAY RESULT IN LOSING SOME OF YOUR MESSAGE TEXT! **
When a mail file is opened, messages are typed out one at a time and
you are asked for a processing option. The available options are
Appendix 4 100
S Saves the message in the mail file
D Deletes the message
C Copies it to another file, keeping it in the mail file too
T Transfers it from the mail file to another file
L spools it for the Lpt and deletes it from the mail file
X spools it for the Xgp and deletes it from the mail file
Z allows line-at-a-time editing from display terminals
E saves it like S and Exits, saving all remaining messages
F sets the File name for C and T (see below)
! saves the rest of this file and goes on to the next
? lists these options
The option letter must be followed by a <cr> except for ? which
activates itself. <cr> without an option letter means S. (Yes or no
questions must also be answered by a Y followed by a <cr>.)
If you use an argument in the RCV command to edit another user's
mail, the first time you specify any option which would remove a
message from the mail file or alter its contents you are asked to
confirm it. Once you have confirmed such an option, however, you are
not asked again.
The Z option, for line-by-line editing, is allowed only from display
terminals (III or Data Disc). The message lines are loaded into your
terminal line editor one at a time, not including the header line or
the space at the beginning of each text line. You can edit the line
with the usual line editor commands, and type <cr> when done. If you
want to cancel the changes to a line while it is still in the line
editor, you can type <altmode>, which will load the original line
into the line editor again. If you want to stop editing, leaving the
remaining lines as they were, type <control><cr> instead of <cr>
after the last line's edits (like E's line insert mode). Lines which
are blank (like between messages) are not edited. To delete a line,
type <control><meta>D when it is loaded in the line editor. To
insert new lines before the line in the line editor, type
<control><meta>I or <control><meta><cr>; then type the new lines,
ending each with <cr> except the last, which should be ended with
<control><cr>. You can also get out of line insert mode by typing an
altmode, in which case (unlike <control><cr>) the line with the
altmode is not inserted. (Also like E line insert.) Typing
<control>D at the end of a line will concatenate it with the next
line and allow you to edit the new line. Typing <meta><cr> in the
middle of a line will break the line in two pieces, storing the first
piece as one line and leaving you editing the second line. The only
way to add new lines after the end of the message is to add some
spaces or something to the end of the last nonblank line, then
<control><bs> over them and <meta><cr>. This crock illustrates my
advice that if you have major changes to a message you will be better
off using the T option to move it to a separate file, editing with
TV, and re-mailing it.
Appendix 4 101
The first time you specify C or T, you are asked to specify a file
name. You can reply with a standard file spec, "?", or <cr>. <cr>
uses the default file name, initially DSK:SAVED.MSG in your area.
"?" will print a helpful message and let you try again. Thereafter,
whatever file you specified will be used for all C and T messages
(the file is not closed until you exit or select another one) until
you specify option F, which asks for a new file name and then for the
processing option again. The file which was open for C and T
messages provides default extension, etc. for the new request, e.g.,
if the first time around you selected MAIL.FOO[S,SYS], if you then
type F and specify filename MOBY you will get MOBY.FOO[S,SYS] rather
than MOBY.MSG in your area. Note: if the specified file already
exists, the new messages are appended to it.
The notation ↓chars↓ may be used to get non-alphameric characters in
a filename. In addition, a shorthand notation is provided for
entering names of mail files: if the character ∂ is the first
character of the file spec, then the device becomes DSK, the default
extension MSG, and the default ppn [2,2]. (The extension and ppn can
be changed later in the filespec.) If the next non-blank character
is not alphameric, the filename used is ↓ prg↓, i.e., your
programmer name right adjusted. (Note that this is your own login
name, not the name whose mail you are editing.) You can specify a
different name with the formats ∂prg , ∂prj,prg , ∂prj,* , or ∂prj,
(the latter uses your own programmer name along with the specified
project name). Any of these may be followed by .ext and/or [ppn] to
change the default values as described above.
Spooling may only be done to one device (XGP or LPT); once you give
an L or X command, the other one becomes illegal. Messages so
processed are transferred to a file called QQSPL.TMP in your area,
and when you exit from RCV a SPOOL or XSPOOL command is executed for
that file. This is one of the reasons that you should exit from RCV
by typing E, not <call>! If you <call> out, files may not get
closed.
It is possible, although hopefully unlikely, that a message may be so
long as to overflow RCV's message buffer. In that case, you will see
as much as fits, followed by an overflow notice and an option
request. After you enter the desired option, the remainder of the
message will be typed as it is being processed, so you may safely use
the Delete option and you will still see the rest of the message. If
you want to avoid this continued typeout, type the letter Q (for
Quiet) before your option choice, e.g., QD for Quiet Delete. Q is
only recognized when a message overflows.
RCV may be run when not logged in, with an argument specifying the
mail files to be edited; however, the messages may only be examined,
not modified--the message files are simply listed without asking for
Appendix 4 102
processing options. In this case it is safe to use <call> to stop
reading messages, but please remember that you must kill the job if
you <call> out of it lest it stay around forever!
There are two special options available in RCV, for reading the A.P.
news digest and for editing messages sent with the GRIPE command.
These options are provided when the RCV command is given without an
argument, if you have an OPTION.TXT file with a line of the form
RCV:DIGEST,GRIPE; (either order, or either one alone, is ok).
The GRIPE option is intended for system wizards, while the DIGEST
option is good for people with both DIGEST and NOMAIL in their LOGIN
options. You are asked READ DIGEST? or EDIT GRIPES? if the
appropriate files exist.
Appendix 5 103
APPENDIX 5
DART
The DART (Dump and Restore Technique) program is used to save disk
files on magnetic tape. It also includes tape positioning commands.
This appendix is excerpted from the file DART.REG[UP,DOC], which
includes information on DART tape formats, complete disk dumps, etc.,
as well as the following facilities provided for individual users.
In the description below, braces, { and }, are used to denote
optional items. Vertical bar, | , denotes an exclusive-or choice.
Pointed brackets, < and >, are used to enclose syntactic items that
are defined below.
DART accepts the following monitor commands:
DUMP {<dest>←}{<source>}
RESTORE {<dest>←}{<source>}
REWIND {<dev>{:}}
EOT {<dev>{:}}
ADVANCE {FILE|RECORD} {<dev>{:}} {<count>}
BACKSPACE{FILE|RECORD} {<dev>{:}} {<count>}
LOCATE {<source>}
TLIST {<dest>}←{<source>}
<dest> ::= {<dev>:}<file>{.<ext>}{[<prj>,<prg>]}
<source> ::= {{<dev>:}{[<prj>,<prg>]}@}
{<dev>:}<file>{.ext}{[<prj>,<prg>]}{,<source>}
<dev> is "any" legal device name.
<file> is any file name or *
<ext> is any file extension or *
<prj> is any project code or *
<prg> is any programmer name or *
<count> is any string of decimal digits.
Caution: The only devices that are appropriate here are disk, mag
tape, and UDP. See the semantics section, below, for further
explanations.
REWIND
This command will cause the device named to rewind to load point.
MTA0 is the default if no device argument is used. The device named
should be a magnetic tape unit.
Appendix 5 104
EOT
This command will cause ADVANCE FILE to be repeated until either two
adjacent file marks are seen (logical end of tape) or until physical
end of tape is reached.
ADVANCE and ADVANCE FILE
This command will cause the tape to advance past the next file mark
on the tape. If a repeat factor is given, then the command will be
repeated that number of times.
Caution: DART often records more than one disk file on a mag tape
file! Therefore, advance file will (sometimes) skip more than one
disk file.
ADVANCE RECORD
Same as ADVANCE FILE except that instead of file marks, record marks
are used. This command leaves you at the front of a record.
BACKSPACE and BACKSPACE FILE
This command will cause the tape to move backwards until a file mark
is seen. DART then does one ADVANCE FILE operation to position the
tape at the front of a file (immediately after the file mark just
read). If a repeat argument is given, then that argument is used to
repeat the backspace operation. Only one ADVANCE is used, after all
backspace operations.
Caution: BACKSPACE or BACKSPACE 1 will position the tape at the front
of the current mag tape file. BACKSPACE 2 will position one
previous, etc.
BACKSPACE RECORD
Same as BACKSPACE FILE except that record marks are used to stop the
operation instead of file marks. After all backspaces are completed,
DART does an ADVANCE RECORD command.
LOCATE
For each file named in the argument list, this command prints the
tape numbers where this file was dumped and the corresponding
creation dates of the file.
TLIST
This command will list on the destination device the names of the
files that are read from the source device.
Appendix 5 105
DUMP
This command will write on the destination device those files that
are specified by the source term. If there is no source argument,
*.*[current area] is used.
RESTORE
This command will restore to the destination the files that are
described by the source term. A null source or destination means
*.*[current area]. The command RESTORE [*,REG]←[*,REG] will restore
all of REG's files to the areas that they were dumped from.
Appendix 6 106
APPENDIX 6
SERVICE LEVEL SYSTEM (RSL)
The RSL monitor command runs the RSL program to reserve service
level. The monitor command takes no arguments; the RSL program
itself accepts commands which control its operation. The first
section of this appendix explains the concept of service level.
The timesharing scheduler gives different priorities to each of three
user classes: interactive users, reserved users, and all others
(scavengers). The first goal of the scheduler is to provide good
service to anyone doing interactive work such as editing. The system
decides whether a given job is currently interactive on the basis of
keyboard input activity.
When you log in at a time for which you have made a service level
reservation, you are assigned that service level. Whenever you are
running, the scheduler will then attempt to give you a processing
level (% of CPU time) given by
PL = SL - C * (B - 1)/10
where SL is the service level, C is your current core size (in K),
and B is the price of service level. The system will not let more
than a certain total service level to be allocated in this way
(currently 80%).
If you are neither interactive nor reserved, you get some of what is
left, which may be pitifully little. The system is supposedly rigged
so that reserved users always get service at least as good as
scavengers. Note that if you are editing and execute a long-running
string search, the system may decide you are a scavenger and take
forever to finish.
Each authorized user has an allowance of two kinds of money, called
whams and bams. Whams may be used only to purchase reservations for
peripheral devices, including III terminals, while bams are good only
for CPU service. The allocations are as follows.
Whams Bams
Half time user 4 100
Full time user 8 200
Panic user 16 400
You are half time or full time in accordance with the portion of your
Appendix 6 107
time devoted to A.I. activities. In an emergency situation, you may
be given a short term appointment as a Panic user.
Your "money" allocations are actually revolving funds in that if you
reserve machine time and use it, you may then re-use the reservation
money. In effect, then, there is a limitation on how much you can
reserve at a given time. There is no conversion between whams and
bams, nor can funds be transferred between persons.
The display costs W (whams/hour) vary with time of day as given in
the table below. The price P (bams/hour) of buying any given service
level SL (in percent) is
P = SL*B
where B is the rate (bams/hour) given in the same table.
Time 0000-0900 0900-1300 1300-1800 1800-2400
W & B W & B W & B W & B
Monday-Friday 1 2 3 2
Sat., Sun., holidays 1 1 2 1
You may reserve a display without a service level or vice versa, but
reservations may be made only for integral hours beginning on the
hour. Other peripheral devices may be reserved only if you have
reserved a service level. The minimum service level purchase is 5%.
The time from 8AM to 9AM and from 5PM to 7PM on weekdays is reserved
for maintenance. No service level or device reservations may be made
in those time periods until 18 hours before the period. Maintenance
reservations for the entire machine may be made, however.
Using the RSL Program
The monitor command RSL with no arguments runs the RSL program. You
must be logged in first.
RSL will prompt you with an asterisk ("*") when it's ready to accept
commands. Command format is discussed in detail below. Commands are
RESERVE, CALENDAR, AVAILABLE, DISPLAY, MAINTENANCE, HELP, and EXIT.
For example, to reserve 15% SL at 1400 on the 31st of December, any
of the following command strings will serve:
RESERVE 15 SL AT 1400 HOURS ON 31-DEC
r 15 on 31 decemb at 2 p.m.
RE 2 PM ON 31 DECEMBER 15
Appendix 6 108
R 15 14 31 12
If you wish to change a service level reservation, just do another
reservation for the new desired amount. Releasing a service level
reservation may be done by "reserving" 0% SL.
IMPORTANT!
When you are through making reservations, you should exit from RSL by
typing E. If you exit instead by typing CALL, then there is a
possibility that your reservations may get lost. The E command causes
reservations to be written out onto the disk.
How to Reserve Devices
The six III displays, the user disk pack, plotter, and MTA0 may also
be reserved. RSL merely makes and retains device reservations;
unlike service level, enforcement is left up to the users. To
reserve III24, 5% service level, and the user disk pack, type RESERVE
5 SL III 24 UDP or R III4UDP5. A device may be unreserved by
preceding it with a minus sign: R -III PLTR -UDP MTA will
simultaneously reserve MTA0 and the plotter, and unreserve the UDP
and any and all IIIs. If you don't care which III you get, you may
say III instead of III4 or III23 etc. Note that the plotter is
considered by the computer to be the same device as the paper tape
punch, so reserving PLTR also makes the PTP unavailable.
Other Commands Available
To get a list of your current reservations, type DISPLAY or D for
short. The command string D XYZ will get a list of programmer XYZ's
current reservations.
The CALENDAR command will show you which programmers have what
reservations on a given time and date. For example, C FOR 3 will
show you the reservations for the current hour and the following 2
hours also.
AVAILABLE is a short form of CALENDAR. A 0000 HOURS FOR 24 ON
1-JAN-88 will yield 24 lines of output telling how much service level
Appendix 6 109
is still available at each time slot on the first day of 1988, should
the system last so long.
HELP or H will type for you a summary of command string structure in
condensed form, not necessarily comprehensible.
The MAINTENANCE or M command reserves the entire (bare) machine for
hardware or software purposes, e.g., M 4 pm for 2 will request the
machine for maintenance from 4 to 6 pm. This command can also be
used to cancel a bare machine reservation. Just type a minus sign
immediately in front of the date specification, e.g. M -25 nov 73
for 2. Do not use this command without prior administrative
approval.
Proper use of the EXIT command can be very important, and requires an
understanding of its function. The data base for all current and
future reservations is kept internally in the *-SL-* program at all
times. Many of the commands you give to RSL cause a change in this
data base. However, these changes are not necessarily made in the
permanent data base, which lives on the disk. The EXIT (or E)
command causes the internal data base to be written out on the disk,
and it is only this copy which can survive system crashes or system
maintenance. It is possible to lose reservations by leaving RSL with
CALL instead of~ E.
RSL Command Syntax
Anything in curly brackets is optional.
A slash ("/") between two terms represents one or more delimiters
(space, slash, apostrophe, minus sign, comma).
A double arrow ("↔") between two terms indicates that the order of
the terms is not always important. If the syntax of a term
distinguishes it, then it may appear anywhere in the command line,
provided no nondistinguishable term which might be confused with it
precedes it. (It's simpler than it sounds.)
Appendix 6 110
<RSL command> ≡ <Rcom>|<Acom>|<Ccom>|<Dcom>|<Hcom>|<Mcom>|<Ecom>
<Rcom> ≡ RESERVE {<sl-arg>}↔{<hr-arg>}↔{date-arg>}↔{<for-arg>}
↔{<device>}
<Acom> ≡ AVAILABLE {<hr-arg>}↔{date-arg>}↔{<for-arg>}
<Ccom> ≡ CALENDAR {<hr-arg>}↔{date-arg>}↔{<for-arg>}
<Dcom> ≡ DISPLAY {<programmer initials>}
<Hcom> ≡ HELP
<Mcom> ≡ MAINTENANCE {-}{<hr-arg>}↔{<date-arg>}↔{<for-arg>}
<Ecom> ≡ EXIT
<sl-arg> ≡ <integer> | <integer> SL
<hr-arg> ≡ {AT} <military hour> | {AT} <civilian hour>
<civilian hour> ≡ [ 1 | 2 | ... | 12 ] { AM | A.M. | PM | P.M.}
<military hour> ≡ [0 | 1 | ... | 23]{00} {HRS|HOURS}
<date-arg> ≡ {ON} <people day>
| {ON} <day-arg>/<month-arg>{/<year-arg>}
<people day> ≡ SUNDAY | MONDAY | ... | SATURDAY
<day-arg> ≡ 0 | 1 | 2 | ... | 31
<month-arg> ≡ <people month> | <computer month>
<people month> ≡ JANUARY | FEBRUARY | ... | DECEMBER
<computer month> ≡ 1 | 2 | ... | 12
<year arg> ≡ {19}71 | {19}72 | ... | {19}80
<for-arg> ≡ <integer> | FOR <integer>
<device> ≡ MTA | PLTR | UDP | <iii>
<iii> ≡ III | III0 | III1 | ... | III5
| III20 | III21 | ... | III25
Semantics
Names of commands, weekdays and months may be abbreviated by
truncation, and may be capitalized or not. Device names may not be
abbreviated.
The FOR term (e.g., FOR 3) specifies a consecutive number of hours,
starting with the hour and date specified.
When the syntax of a command does not allow a left-to-right scanner
to distinguish terms, then the ambiguous terms will be assumed to be
in the order listed in the syntax.
If a term is missing from an argument, RSL will supply one it deems
appropriate. RSL always has a time and date "in mind," called the
default date. The default time and date are usually the last time
and date you typed. If a command does not specify a time (date),
then the default time (date) will be used.
Commands terminated with a line feed (altmode) will advance (backup)
Appendix 6 111
the default time and date before executing the command. The amount
of advance (backup) is 1 hour, 1 day, 1 week, 1 month depending as
plain, control, meta, or control-meta were used with the line feed
(altmode).
A date specified by giving the name of a day, is the earliest future
or present date falling on the given weekday. (Notice that at 0830 on
Wednesday, "WEDNESDAY" specifies either the current date, or the date
one week hence, depending on the hour specification.)
Appendix 7 112
APPENDIX 7
FIXIMLAC
The FIXIMLAC command is used from IMLAC terminals to reload the
program which controls the terminal into its minicomputer. The
command runs a program on the PDP-10, and may be used without logging
in first. The use of the command is shown below as part of the
startup procedure.
IMLAC RELOADING PROCEDURE
IF THE IMLAC IS DEAD:
1. SHIFT LOCK off (up).
2. Start at 40 (Push STOP, then hold the AT 40 key while pushing
START).
3. Type C (upper case) several times to send ↑C's.
4. Type fiximlM (upper case M goes out as a <CR>).
5. Wait about 10 seconds to give the system time to log you in.
6. Hit <CONTROL><TOP><SHIFT>S.
IF THE IMLAC IS ALIVE:
1. At monitor level, type FIXIML.
2. When the program puts out a *, type
<CONTROL><TOP>B (Sends the IMLAC to its loader)
<CONTROL><TOP><SHIFT>S (Starts the loader)
Appendix 8 113
APPENDIX 8
ARPA NETWORK
The ARPA network is a facility organized by the Advanced Research
Projects Agency of the Department of Defense to connect computers at
various research centers funded by ARPA, allowing people at one site
to use the resources of another site. The device which provides the
interface between our computer and the network, called an IMP
(Interface Message Processor), can be used by user programs like any
other I/O device. Two main system programs are provided for
connecting to other computers by console commands: the user TELNET
program, called T, and the File Transfer Protocol, FTP. The former
allows you to use your terminal as if it were a terminal of the
remote host computer; the latter provides high-speed transmission of
data between hosts. This appendix explains the use of these
programs. It contains excerpts from the file NET.JAM[UP,DOC], which
also describes the UUOs for user programming of the IMP. The FTP
command description here is taken from FTP.DCS[UP,DOC].
The TELNET or TN commands, which are identical in effect, are used to
run T. The FTP command runs FTP. Both require that you be logged
in. They take a remote host name as argument. (The host names are
listed in a later section of this appendix.) Both programs try to
establish a connection to the remote site. Once this connection is
established, the T program simply allows you to type at the remote
computer as if you were using one of its own terminals. (T also
handles special command characters which control local echoing of
typein, etc.) FTP, however, accepts commands which allow sending and
receiving files. The special commands for these programs will be
described below, after a glossary of ARPA network jargon.
Glossary
NCP This is the software in the monitor that
services the IMP.
TELNET The thing you type into that sends your
characters off to a foreign site is a user
TELNET program. The thing that receives them
at the other end and passes them on to the
timesharing monitor there is the server
TELNET. These are generally user-level
programs.
Appendix 8 114
SOCKET When you log in on another system, there are
four socket numbers involved. There is a
local send socket number, a local receive
socket number, a foreign send socket number,
and a foreign receive socket number. These
numbers are internal connection indexes and
are used to keep different connections
separate. Each connection has a unique set
of 4 socket numbers. (Actually, there are
two connections involved, one in each
direction. Thus, in ARPA net terminology,
each connection has two socket numbers, but
you have four sockets altogether.)
LOGGER Each site is supposed to provide a program
that does nothing but sit around and listen
to socket 1. When someone connects to socket
1, the LOGGER is supposed to send it back a
socket number that the foreign host can use
to connect to the LOGGER's host on. Only the
serving host knows what socket numbers it can
service, and it is the job of the LOGGER to
pass out these numbers. (The LOGGER also
listens to socket 3 for FTP requests.)
RFC Request for connection. This is how a pair
of hosts establish a connection. The
originating host sends an RFC to the
destination host with a local socket number
and a foreign socket number as arguments.
The destination host can complete the
connection by returning an RFC with the same
socket numbers, or can refuse the connection
by returning a close code.
LINK Once a connection is established, an 8-bit
link number is assigned such that the 8-bit
host number concatenated with the 8-bit link
number is unique at both ends of the
connection. During the lifetime of the
connection, the link number is used to
separate the connections, being as how the
socket numbers are 32 bits long. The IMP
itself is programmed in such a way that only
one message may be in transit on a particular
link at a time. The IMP signals the sending
host that the message has arrived by
returning a RFNM (request for new message)
with that link number as an argument. All of
this is invisible to the user.
Appendix 8 115
CONTROL MESSAGES Data is sent between hosts on a non-zero link
number. Link zero is defined as the control
link, on which hosts communicate regarding
the connections. All host to host protocol
messages are exchanged on link zero.
ALLOCATION The host to host protocol defines a kind of
flow control on a higher level than the RFNM
control. This is the allocation system.
When a connection is first established, the
receiving host sends a control message
telling the sending host how many bits and
messages can conveniently be buffered. The
sending host must then not send more than
that many bits or messages without waiting
for more allocation from the receiving host.
Although much of this is unseen to the user,
the user has control over how much allocation
the system will give the remote host. For
data and file transfer purposes, it is
convenient to increase the allocation over
the system default amount.
The User TELNET
Our user TELNET program is called T. It is run by the TELNET or TN
commands, which take a site name as argument. When it is run, it
attempts to connect to the specified host. It will type either
Connection established if successful, or an error message otherwise.
The various possible connection errors are described later.
Foreign sites do not use the Stanford character set. Instead, they
accept standard ASCII codes. Letters, digits, and most of the
punctuation characters available in ASCII are the same in the two
codes, however. The main difference is that codes 1 to 37 (octal),
used for special printing characters at Stanford, are control
characters in ASCII. The precise use of these control characters is
defined by the remote host. TENEX sites, for example, use ASCII
control-A to mean "delete one character," like our BS. Our T program
handles this difference by interpreting the CONTROL key on a Stanford
keyboard to mean ASCII control; i.e., CONTROL on a letter makes T
convert the letter to upper case and subtract 100 from the character
code. T uses META and CONTROL-META characters as commands to itself,
as listed below. In some cases, META and CONTROL-META are
equivalent. In others, a processing switch is set by META and
cleared by CONTROL-META. In the list below, βX represents META-X,
αβX is CONTROL-META-X, and ⊗X means either one.
Appendix 8 116
There are certain differences between the two character sets in
non-control characters. These are handled by automatic translation
in our TELNET and FTP user and server programs. Specifically, the
following translations are done:
char Stanford ↔ external
~ 32 ↔ 176
} 176 ↔ 175
ALT 175 ↔ 33
≠ 33 → 33
The Stanford not-equal has no external representation and cannot be
entered from a remote site. All other codes are transmitted
unchanged. Note that our BS (octal 177) is the ASCII delete; there
is an ASCII backspace (10), which is our λ. Typing λ or CONTROL-H to
T will produce that code. The other possible ambiguities are our
characters ↑ ( 136) and ← (137). These codes have two different
meanings: the DEC PDP-10 version of ASCII agrees with our use, but
the official version uses those codes for circumflex and underbar.
Our network programs support the arrow version, and our ∧ and _
characters are transmitted unmodified as 4 and 30.
It is possible to simulate the CONTROL and META functions when using
T from a Teletype. To allow this, T recognizes the character
control-E (↑E) as an escape character if it is run at a Teletype.
One ↑E before a character means CONTROL, two ↑Es means META, and
three means CONTROL-META. For example, ↑E↑EQ from a Teletype is like
META-Q at a display.
Control Commands to T
⊗<number>An octal argument is assembled from digits typed this way.
⊗H Sends the previously typed octal argument as a single ASCII
character. For instance, ⊗1⊗0⊗1⊗H is the hard way to send
an "A".
αβ<BS> Sends 177 (ASCII delete). The line editor will not send
<BS> to programs without CONTROL-META.
βL Enter line mode. Characters you type are sent to your line
editor as usual, and not sent to the remote site until
activated by RETURN, LINE, ALT, or some CONTROL or META
character not taken as a line editor command.
Appendix 8 117
αβL Enter single character mode. In this mode, each character
is an activation character, and is sent individually to the
foreign host when it is typed. This is useful for using DDT
at a remote host.
⊗S Send. If T is in line mode, this command causes all the
characters typed so far to be sent to the foreign host.
Normally, the characters are sent only when CR, LF, or ALT
are typed when in line mode. This command is not useful for
Teletypes, because typing ↑E↑ES does not cause an activation
in line mode.
βY Enter Datapoint simulation mode. This is often used when
talking to the three ITS systems at MIT. If you also
convince MIT that you are a Datapoint, their display
programs will work properly from our display terminals.
αβY Leave Datapoint simulation mode.
βE Begin local echoing. Different sites have different echoing
conventions. Some sites expect to send back echoing, some
do not. If you find that what you type is not being echoed
in a reasonable time, you may use this command to let you
see what you are typing.
αβE Terminate local echoing. One does this when each key one
types appears twice on the console. Turning off local
echoing will often eliminate one copy of the key.
βR Inhibit sending of LF after CR. Normally, when CR is typed,
a LF is invented by the system and CRLF is sent to the
foreign host. This command inhibits sending the LF after
the CR.
αβR Enable sending LF after CR. The inverse of the above
command.
βK Inhibit duplexing LF after CR. The system normally types a
LF out when you type CR. This command inhibits that. This
command is different in effect from βR, because it alters
only what appears on your screen, not what goes out over the
line.
αβK Enable duplexing LF after CR. The inverse of the above
command.
⊗X Set escape character. The escape character is normally set
to ↑E, but may be changed by this command. The next
character typed is taken to be the new escape character.
This is useful for Teletypes only.
Appendix 8 118
βI Open input file. This command asks for a file name, then
proceeds to send said file to the foreign host.
αβI Close input file.
βD Open output file. This command asks for a file name, then
proceeds to write everything that comes from the foreign
host on this file. Note that characters you type, or
characters from any input file that is opened, do not go
into the output file unless the foreign host is duplexing
them.
αβD Close output file.
⊗Q Quit. Terminates connection and closes any input or output
files that may be open.
⊗C Send interrupt. The host to host protocol defines an
interrupt that may be sent. This command sends said
interrupt.
T normally sets the echoing and activation conventions to those used
by the particular site in question, but anomalies do occur. For
instance, the foreign host's program may instruct the foreign system
to inhibit duplexing, but that will not inhibit local duplexing. For
example, if local echoing is in effect, an attempt by the remote
computer to prevent echoing of a password will not work.
The File Transfer Protocol
The FTP command is used to set up a connection to a remote File
Transfer Protocol Server. It takes a site argument like TELNET, and
the connection process is identical. Once the connection is set up,
you can enter the following commands to the FTP program. Each
command is a four-letter name followed by arguments as described
below. Note that file specifications for remote sites must follow
the format conventions of that site; they are passed on verbatim by
the FTP. In particular, the case of letters may be significant at
some sites.
Note: FTP command strings sent over the control link to the remote
host are subject to character conversion to conform with standard
ASCII, as described in the discussion of the TELNET program.
However, the files transferred over the data link are not modified by
FTP.
Appendix 8 119
BYTE n n is a (decimal) number indicating the byte size of the
network data connection. Data will be sent from one site to
another in bytes of this size.
TYPE x x is A, I, L, P, or E, and specifies the representation type
for the data. A means the data is in (8-bit) ASCII. I is
image type. The other three are more obscure: local byte,
print file (ASCII), and EBCDIC print file. At the moment,
SAIL supports ASCII and image types only. The default is
image. If you must know about unusual types and modes, read
the official FTP document, NIC 10596.
MODE x x is S, B, T, or H, meaning stream, block, text, or hasp
transmission modes respectively. At the moment, SAIL
supports stream and text modes only. The default is stream.
USER x x is a string which the foreign site will recognize as a
valid user description, user name, or ppn. Not all sites
require a user name.
PASS foo foo is a password. Some sites may restrict access to those
who can supply the magic foo.
ACCT x x is an account number. Some sites may require this for
their billing/accounting purposes.
RETR x←y This command retrieves a file from the foreign site. x is a
local file specifier, and y is a foreign file specifier.
The foreign file y is copied to the local file x. Current
settings (or default values) are used for byte size,
representation type, and transmission mode. The x← string
is eaten locally, and the RETR y part is transmitted to the
foreign site. If you haven't typed any MODE, TYPE, or BYTE
commands, the defaults will be sent before the first RETR or
STOR.
STOR x→y STOR means store, and this command is the inverse of the
RETR command. A local file is copied to a foreign site.
APPE x→y This command will append the local file to the end of the
foreign file.
MAIL x x is a user ID (like our PPN). Following this command you
may type in a message which will be mailed to the specified
user at the foreign site. The message must be terminated
with a line containing only a period.
MLFL x→y In this case x is a local file specifier, and y is a foreign
user ID. The text of the specified file will be mailed to
the specified user.
Appendix 8 120
HELP This command asks the foreign FTP server to send back a
message indicating what commands it takes, etc.
STAT x If x is omitted, this command asks the FTP server to send
back information regarding the FTP connection, e.g., socket
numbers. If x is a directory name at their site (like our
PPN), it lists that file directory.
DELE x x is a foreign file specifier. The specified file is
deleted at the foreign site.
RNFR x x is a foreign file specifier. This command is short for
rename from; it must be immediately followed by a RNTO.
RNTO x x is a foreign file specifier. This command completes the
file rename operation started by RNFR. (Some sites accept *
for wildcard specification in these commands.)
RSTR RSTR means restore--included to help remedy a hack in the
current FTP, wherein sometimes an attempted transfer fails,
but our end is unaware of it and leaves the connection open.
The RSTR command causes our end to forget everything it
knows about data connections to the other end. Any command
should be legal after that.
QUOT x x is any character string, which should be an FTP protocol
command with arguments. The string is sent as is over the
FTP control link (see FTP protocol, NIC 10596 for terms).
QUOT was included to allow you to execute commands which are
as yet unimplemented here, or which are nonstandard,
specific to some serving site. It will be of little use for
those commands which require some special action by the FTP
program at this end.
QUIT Terminate connections with the foreign site and quit.
Appendix 8 121
Table of Host Mnemonics
Note: A decimal site number may be used with TELNET and FTP instead
of a site name. Also, <site>#<socket number> will select a
particular socket. (Some hosts provide special services at
particular sockets.)
LONG NAME SHORT SITE LONG NAME SHORT SITE
ABERDEEN ABER 29 MIT-ML ML 198
AMES-67 AME67 16 MIT-MULTICS MLTX 6
AMES-TIP AMET 144 MITRE-TIP MTRT 145
ARPA-TIP ARPT 156 MOFFETT MOFF 45
ARPA ARPA 28 NBS-TIP NBST 147
BBN-NCC NCC 5 NBS NBS 19
BBN-PDP1 BBN1 197 NORSAR-TIP NORT 169
BBN-TENEXB BBNB 133 PARC-MAXC MAXC 32
BBN-TENEX BBN 69 RADC-TIP RADT 146
BBN-TIP BBNT 158 RADC RADC 18
BELVOIR BELV 27 RAND-RCC RAND 7
BOSTON-TIP BOST 168 RML-TIP RMLT 165
CASE-10 CASE 13 RUTGERS-TIP RTGT 174
CCA-TENEX CCA 31 SCRL SCRL 67
CCA-TIP CCAT 159 SDAC-TIP SDAT 154
CHI CHI 131 SDAC SDAC 26
CMU-10A CMUA 78 SDC-ADEPT SDC 8
CMU-10B CMU 14 SRI-AI SRAI 66
DOCB-TIP DOCB 153 SRI-ARC NIC 2
ETAC-TIP ETAT 148 SU-AI SAIL 11
FNWC-TIP FNWT 161 SU-HP SUHP 75
FNWC FNWC 33 TINKER OCAF 21
GWC-TIP GWCT 152 TYMSHARE TYMS 43
HARV-10 HARV 9 UCLA-CCBS UCL10 129
HARV-11 HRV2 137 UCLA-CCN CCN 65
HARV-1 HRV1 73 UCLA-NMC NMC 1
HAWAII ALOT 164 UCSB-MOD75 UCSB 3
I4-TENEX AMES 15 UCSD-CC UCSD 35
ILL-11 ILL11 12 UKICS-360 UK 42
LBL LBL 34 UNIVAC ILL 76
LL-67 LL67 10 USC-44 USC 23
LL-TSP TSP 138 USC-ISI ISI 86
LL-TX2 TX2 74 USC-TIP USCT 151
LONDON-TIP UKT 170 UTAH-10 UTAH 4
MIT-6180 MIT 44 UTAH-TIP UTAT 132
MIT-AI AI 134 XEROX-11 XER11 160
MIT-DMS DMS 70 XEROX-VTS VTS 96
Appendix 8 122
Connection Error Messages
CONNECTION HAS BEEN CLOSED
This means just what it says. The host has voluntarily broken the
connection for reasons known only to himself.
RESET RECEIVED FROM HOST
The host has sent us a reset command which directs our NCP to break
all connections to this host and clear our tables of everything it
knows (regarding previous connections) about this host. Some sites
will send a reset the first time you connect to them as standard
procedure. In this case, trying again will succeed. In the more
normal case, this means the host has crashed and just been brought up
again.
HOST DEAD
This means that the RFC got to the host's IMP, but was not read from
the IMP within 90 seconds, and the IMP timed out. This generally
means the host is really down. When this happens, the NCP remembers
that the host in question was down so that it does not have to wait
for the 90 second timeout. In this case a connection is not even
attempted. If you want the system to attempt the connection even
though it thinks the host is dead, end the host name with altmode
instead of carriage return.
DATA QUOTA OVERFLOW
The host is not conforming to protocol and has sent us more data than
we allocated him. We are breaking the connection.
END OF FILE
Doesn't occur in normal circumstances.
SOCKET IN USE
Generally happens after an aborted attempt to connect to someone
else. This means the foreign host suddenly sprang to life after T
timed out and sent us an RFC from a different socket than he told us
he has now. This cures itself in a few minutes.
CAN'T CHANGE SOCKETS
SYSTEM ERROR
NO LINKS AVAILABLE
ILLEGAL BYTE SIZE
Appendix 8 123
These all indicate horrible system errors of one form or another and
should not happen.
IMP DEAD
The interface has begun to malfunction, the network control center
has brought the IMP down, or someone here has given the magic UUO
that brings the IMP software down.
HOST NOT RESPONDING
One of the various timeouts inside T or the system went off. T times
out generally when a message is sent to the foreign host which
demands a response and no response was received within a "reasonable"
time.
The following messages appear only in conjunction with one of the
above messages and indicates only the point in T where the error
occurred.
CAN'T CONNECT TO LOGGER
The error occurred on the initial RFC to get the foreign host's
LOGGER.
DIDN'T GET SOCKET NUMBER FROM LOGGER
We exchanged RFC's with the foreign host's LOGGER, but somehow he did
not send us a socket number.
CAN'T CONNECT TO RECEIVE SIDE
We got a socket number from the LOGGER and tried to open a connection
on that socket when the error occurred.
CAN'T CONNECT TO SEND SIDE
We got the socket number and successfully sent an RFC to the receive
socket, but we hit an error when trying to send an RFC to the send
socket.
ERROR WHILE WAITING FOR RECEIVE SIDE
This means that we successfully sent RFC's to the send and receive
sockets, but we got an error while waiting for the return RFC on the
receive side.
ERROR ON OUTPUT
ERROR ON INPUT
Appendix 8 124
These are given after the connection is established and refer to
errors that occurred while doing output or input.
Appendix 9 125
APPENDIX 9
CARE AND FEEDING OF DEVICES
The Line Printer
On the front of the line printer (LPT) there are several buttons
(STOP, START, TOP OF FORM, MANUAL PRINT, TEST PRINT, OFF, and ON) and
several indicators. The normal state of the line printer is with the
START button lit and all red indicators off. (TOP OF FORM is always
lit.)
If the system or the spooler reports that the line printer is hung,
check the following things. If the START button is not lit and there
are no red indicators, push the START button. If there are red
indicators, NO PAPER or PAPER LOW ALERT lit, then you have to put in
more paper (or fix the paper that has gone astray).
To reload the paper, find someone who knows how to do it and watch
him, or do it yourself. Reloading the paper is fairly obvious. The
front cover (which includes a transparent section) is hinged at the
top; lift it. The yoke is the assembly which carries the ribbon, the
printing drum (which you can't see) and a rotating disk at the left
side. Open the yoke by finding two toggle switches (one with each
hand) and pushing them both down. These switches are located to the
left and right of the yoke and below it. They are each labeled CLOSE
- OPEN. The yoke will stop when it is fully open. Find four paper
tractors, two above the printing hammers and two below. Each tractor
has a sprocket wheel (which pokes through the holes in the edge of
the paper) and a retainer which holds the paper against the sprocket.
Open all the tractors. If the paper is perforated for 8.5 inch wide
pages, be sure that the perforation is closer to the right side.
Push the TOP OF FORM button before loading the new paper. Use the
black arrows to align the "concave" fold. The concave fold is the
one where the two adjacent sheets are front to front when folded.
Close the four paper tractors so the sprockets fit into the holes in
the paper. Close the yoke by finding those two switches and pressing
up on both of them. Push START.
Always restart the fan-fold at the back of the LPT so the paper will
stack properly.
The line printer logic can become hung. This condition is identified
Appendix 9 126
by the MANUAL PRINT light being on continuously. Push MANUAL PRINT
and then START to clear this condition. If that fails, open the door
on the right side and push the black button labeled RESET. If that
fails, find a wizard.
If the ALARM STATUS light comes on or if the printer starts making a
loud buzzing noise, shut off the printer (push OFF) and find a
wizard. (This light may come on briefly when the printer is being
turned on.)
The YOKE OPEN light comes on when the yoke is open while the paper is
being changed. When the yoke is closed it should go off.
The printer has a ribbon that can be changed too. It is best to
watch someone do it before trying it yourself.
DECtapes
To mount a DECtape, first assign an available drive. Drives are
identified to the system by a rotary switch labeled 1,2,...,8
corresponding to DTA1, DTA2, etc. Although there are eight numbers
on the switches, there are only four drives, and the system will not
recognize DTA5 and up. Generally you should have no reason to change
the normal setting of these switches. Place your tape on the left
reel of the drive and thread the tape over the top of the tape guide
and head assembly. Wind several turns of the tape onto the takeup
reel (turn the reel clockwise). Finally flip the OFF-WRITELOCK-WRITE
switch to WRITE LOCK, or if you want to write, to the WRITE position.
To unload the tape, wind the tape off the takeup reel by the
direction switch (push it to the left and hold it). Turn the drive
off when all the tape is on the left reel. Grasp the reel firmly and
pry it off the hub.
Magnetic Tapes
First, decide whether you want to write on the tape or not. If you
intend to write, place one of the plastic write-enable rings in your
tape. Place your tape on the top hub and twist the handle in the hub
clockwise to tighten the reel to the hub. (You can really lose if
you don't tighten it all the way!)
Between the two reels there is a three-position switch labeled
Appendix 9 127
START-BRAKES. Move the switch to the right and hold it there to
release the brakes on the hubs. Unwind the tape until the end of the
tape is about a foot from the floor. Carefully thread the tape into
the slot between the reels to the left of the brake release switch.
Wind the tape onto the bottom reel (wind the reel clockwise). You
must be holding the brake release switch to the right to wind the
tape. Wind several feet of tape onto the takeup reel until you see
the metal foil load point marker go by. Then push the brake release
switch to the left (the START position). The tape will hiss and
spin. Hold the switch in START until all motion stops.
There are some control buttons on the top panel. One is labeled (and
lighted) REMOTE-LOCAL; this button toggles. In LOCAL mode, push the
REWIND button. If you're not sure that you have the load point
marker on the takeup reel, push the FORWARD button for several
seconds to wind the tape forward onto the takeup reel until it passes
the load point marker, then REWIND. REWIND positions the tape at
load point. Set the drive in REMOTE and it is all set to use.
Unloading the tape is simple. In LOCAL mode, push the REWIND button.
When the tape finished rewinding, push the brake release switch and
manually wind the tape onto the top reel. Unscrew the hub and remove
the reel.
The magnetic tapes are quite finicky and the system software is
somewhat flaky. There are several things that you can do with mag
tapes that will upset the timesharing system and require the
intervention of a wizard who will be angry at you for disturbing his
slumber. Never stop your job when it is operating the tape by typing
CALL. Instead, the job can be stopped by causing the magnetic tape
to appear hung. This is done by switching back and forth between
REMOTE and LOCAL until the system stops the job.
There is a reset button for each tape drive located behind the small
front panel below the drive mechanism. This button clears all tape
motion functions in a reasonable way.
Xerox Graphics Printer
The normal condition of the XGP is indicated by the green ON light
and the orange READY light being on. If all indicators are off, the
XGP main power has been shut off inside the cabinet, possibly for
some reason.
If the red OFF light is on, push the ON light. This will turn the
XGP on, unless some abnormal condition obtains, such as a paper jam
near the cutter.
Appendix 9 128
If the orange STANDBY light is on, look inside the panel above these
indicators. The following is the normal state of the indicators and
switches within:
Knobs: VERTICAL POSITION: C
TEST PATTERN: OFF
Lights that should be on:
All POWER SUPPLIES lights
(except 10kv and 2.5kv lights will
be off any time there is some other
problem)
All PROCESS INTERLOCK lights
All CONTROL LOGIC (except IN SYNC)
Lights that should be off:
All SUPERVISORY SIGNALS
FAULT
IN SYNC
Appendix 9 129
Certain conditions of the XGP are indicated by lights being OFF. (If
any of the conditions listed below obtains, the 10kv and 2.5kv power
supplies will shut off.)
FWT Fixed wait timer has not run long enough after
being turned on. Wait 2 minutes.
FUSER The fuser is not hot enough.
If the XGP has just been turned on, wait 5 minutes;
otherwise, reset the over-temperature sensor.
The over-temperature sensor is reset by a small
black button located somewhere in the middle of the
fuser wick assembly.
WEB CLEAN
The drum cleaning web must be replaced.
PAPER OUT
Load more paper.
DRUM The drum assembly has been disengaged.
SWEEP PRESENT
The interface is not providing a sweep signal.
This may mean the connector is unplugged or the
interface turned off.
To load a new roll of paper, open the left door of the XGP. Unscrew
the roll retainer and remove the old roll. Unwind a foot of paper
from the old roll and then cut the paper at the roll. Mount the new
roll and tape the front end of the new roll to paper separated from
the old roll. Make the leading edge of the joint as smooth as
possible. Using the MOTOR MANUAL DRIVE button, advance the splice
through the machine until it has passed the cutter.
If any problems develop in this sequence, find a wizard. Beware:
certain parts of the XGP are hot; you can be painfully burned if you
touch the wrong things.
There is a drum cleaning web that runs out at inconvenient times.
There is a small diagram inside the XGP explaining how to change the
web.
Toner is icky black stuff that makes the marks on the paper. It gets
used up and runs out too. Someone is supposed to check the toner
every day and add more if it gets too low. If the XGP runs out of
toner, the pages will start getting lighter, there will be occasional
black splotches on the paper, and frequent sand-like particles will
be found embedded in the paper. Toner is checked through the access
Appendix 9 130
panel in the back of the XGP. There is a lever there that adjusts
the rate at which toner is used on the paper. This lever must be
placed either at the lightest (inner) setting or one setting darker.
Never, never set it anywhere else.
If you don't like the copy quality, complain to a wizard. Don't
adjust things yourself.
User Disk Pack
There is one drive on the IBM 3330 disk system which is reserved for
private disk packs. This drive is labeled USER PACK. Use the
command ASSIGN UDP to assign the drive before you mount your pack.
Assuming there is no pack mounted already, you can mount your pack by
moving the CLOSE-OPEN switch to OPEN. The drive will open up.
Remove the bottom cover from the pack by squeezing the two handles on
the bottom together. Place the pack bottom on the top of the
cabinet. Place the pack (still in the top cover) in the drive unit.
Turn the handle clockwise. It will be somewhat hard to turn. Turn
until it stops. Carefully remove the top cover and place it on the
bottom cover. Make sure the two covers are aligned to keep dust out
of the enclosed space. Turn the top cover so the label on it is
visible. Flip the CLOSE-OPEN switch to CLOSE and the START-STOP
switch to START. The drive will close and start spinning the pack.
When the green ready light comes on, the pack can be used. There is
a R/W-READ switch for the pack. If you do not intend to write on the
pack, it is a good idea to put the drive in READ mode.
Unloading the pack reverses the steps above. Turn the START-STOP
switch to STOP, and the CLOSE-OPEN switch to OPEN. The drive will
open as soon as the pack slows down. Take the top cover whose label
corresponds to the label on the pack and place it carefully over the
pack. Turn the handle counter-clockwise until it moves freely. Lift
the pack out of the drive. Place the bottom cover under the pack and
press it on until it latches. The covers help keep dust off the
packs. Return the pack to the storage rack. Leave the label facing
outwards so you can find it again.
Occasionally, the UDP may not be available to anyone. If this
happens, a wizard will explain why. Never touch a disk drive unit
unless you have it assigned! Never touch anything but the drive
which is marked USER PACK! If you are confused by something you see,
ask about it before you touch!
Appendix 9 131
Core Storage
We have the most outlandish collection of junk that anyone ever
called a memory system. Occasionally it works. At the other times,
it produces parity errors and sometimes it decides not to work at
all.
Memory errors have never, never been fixed by software means. In
particular, reloading the system never solves the underlying problem.
If the system becomes unusable because of these errors, a wizard
should be found.
Memories stop working entirely due to hardware logic bugs. There is
a MEMORY STOP light on the PDP-10 console, which usually indicates
this problem. Usually the memory can be reset and the system
continued. If possible, find a wizard to fix it. Otherwise, read
on. A hung memory can be identified by:
DEC core: AW RQ light off
new Ampex: UA light off
old Ampex: UA light off
Push stop on the PDP-6 and the PDP-10. Reset the memory by:
DEC core: Push RESTART (top panel) and RESET
(inside the front panel) simultaneously.
new Ampex: Push RESET (the big green-blue button)
on Core 0 and Core 1 simultaneously, or
Core 2 and Core 3 simultaneously.
old Ampex: Push the black CLEAR button inside the
cabinet and the white RESET button on
the AMPEX INTERFACE box.
Once the memory is reset, the computers have to be convinced that
nothing bad happened. Set 700200 010003 in the data switches and
push the console EXECUTE key. Then push CONTINUE.
Appendix 10 132
APPENDIX 10
RELOADING THE SYSTEM
If the system crashes or refuses to run jobs normally, it must be
reloaded. If possible, find a system programmer, who will try to
find out what the trouble is. If that fails, check the MEMORY STOP
light on the PDP-10 console. If this light is on, look up the memory
stop procedure in Appendix 9. Otherwise, read on.
First, write in the log your name and the reason that the system is
being reloaded.
Find the paper tape labeled SYSTEM LOADERS and mount it in the paper
tape reader. (It may be mounted already, or it may be an unlabeled
blue mylar tape loop.) Push the console keys RESET and READ IN.
If you're lucky, the system will load itself without further hassle.
If the PDP-6 is stopped, it must be started by setting 204 in its
address switches and pushing the keys INSTRUCTION STOP, IO RESET, and
START.
If the system is being loaded without the PDP-6, then the current
date and time must be typed in at the CTY during the reloading
sequence. Be sure you supply the correct date and time!
Sometimes the system loader tape doesn't work. In this case, find
the DECtape with the current system. The DECtape will be labeled
with the system name and date. Mount it on some DECtape drive. Find
the paper tape labeled 71.5K RIM10B DECDMP and load it into the paper
tape reader (on the PDP-10). Stop the PDP-6. Press RESET and READ
IN on the PDP-10. The tape will be read, and the CTY will type
carriage return and line feed. Type nL, where n is the number of the
DECtape drive which has the system tape. The tape will spin for a
while. Eventually, the CTY will type crlf again. Type ,,206G to
start the system. (If the Librascope disk is down, type ,,200G
instead.)
Appendix 11 133
APPENDIX 11
MONITOR ERROR MESSAGES
This appendix lists the error messages typed by the monitor itself
(not by other system programs) with explanations for some of them.
Many have to do with errors induced by UUOs in your program, and
these are explained in the UUO Manual, in the writeup of the UUO
involved. The list is alphabetical; messages which start with a
variable part are sorted under the first fixed word.
Note: Several of these messages are of the form XXX AT USER
<address>. It is possible in some of these cases to get XXX AT EXEC
<address> instead, which means that the offending instruction was not
in your program, but in the monitor, which was trying to do something
on your behalf when it happened. If this happens repeatably, or if
the message is shortly followed by a system crash, tell a system
programmer.
ADDRESS CHECK FOR DEVICE <dev>
Your program was trying to use the indicated device, and
supplied a buffer address, dump mode command address, etc.,
outside the bounds of your core image.
ADDRESS OUT OF BOUNDS, UUO AT USER <address>
Your program executed a UUO which takes as an argument an
address in your core image, and the address was out of
bounds. The address given is that of the offending UUO.
ALREADY ASSIGNED TO JOB <job number>
You typed an ASSIGN command, and the device you wanted is
in use.
<terminal> ALREADY ATTACHED
You typed an ATTACH command, and the job you are trying to
attach is already attached to a terminal.
?AMBIGUOUS JOB NAME
Your program gave a MAIL UUO which refers to another job by
name, and there are two or more jobs with that name.
ATTEMPT TO ENABLE INTERRUPT ON PDP-6
Appendix 11 134
Your program tried to enable a user interrupt routine to
run on the PDP-6. This feature is not implemented.
ATTEMPT TO GENERATE NON-ENABLED INTERRUPT
Your program tried to send itself or another job an
interrupt for which the job was not enabled.
ATTEMPT TO INITIATE SPW JOB WITH ONE ALREADY RUNNING
Your program has a spacewar module active and is trying to
start another one on the same processor.
ATTEMPT TO SCHEDULE I-LEVEL PROCESS, UUO AT USER <address>
Your program's interrupt routine executed a UUO which would
put it in a wait state. User interrupt routines aren't
allowed to do that. See the UUO Manual.
BAD DIRECTORY FOR DEVICE <dev>
The device is a DECtape. This might mean that the tape is
in a format not recognized by the monitor. (Our system
uses a different directory format from the PDP-10
standard.) It can also happen if you try to write on a
write-locked DECtape.
BAD RETRIEVAL
The pointers to your file on the disk are invalid. See a
system programmer to try to fix it.
BUFFER TOO LARGE, UUO AT USER <address>
Your program is trying to use an I/O device for which there
is a limit on the allowable user buffer size, which you
exceeded. The UUO Manual explains the rules for each
device.
BUSY
You gave a TALK command addressed to a terminal which is in
user mode or has characters in its input buffer.
CAN'T ATT DEV
You gave the privileged ATTACH <device> command and don't
have the DEV privilege.
<dev> CAN'T BE REASSIGNED
Appendix 11 135
You gave a REASSIGN command in which the device to be
reassigned was your own terminal. This is illegal.
CAN'T CONTINUE
You typed CONTINUE after one of the other error messages
came out, and you are not allowed to continue the job after
that error. You also cannot continue a job after a SAVE or
SSAVE.
CAN'T DET DEV
You gave the privileged DETACH <device> command and don't
have the DEV privilege.
CAN'T ENTER-RENAME MFD
If you get this message, see a system programmer, who will
eat you.
CAN'T LOCK WITH SEGMENT
Your program, which has an upper segment, gave a LOCK UUO.
This is illegal.
CAN'T TERMINATE SOMEONE ELSE'S SOCKET!
Your program is using the ARPA network and tried to
terminate a connection which does not belong to it.
CONFLICT BETWEEN INTERRUPT ENABLINGS
Your program tried to enable both old-style and new-style
interrupts in a conflicting manner.
CONS TRAP AT USER <address>
You can only get this one from a program running on the
PDP-6, which means it must be a spacewar module. The CONS
instruction is a nonstandard addition to our PDP-6
installed for the benefit of LISP people. It sometimes
gives this message. The address is that of the CONS which
failed.
CORE DEADLOCK.
The monitor's free storage area has expanded enough so that
user core is no longer big enough for your core image.
This might fix itself if you wait a while, but if you must
run immense programs your best bet is to come back at 3am.
Appendix 11 136
COULDN'T GET YOU A SEGMENT. WILL TRY TO LET YOU WIN WITH SETPR2.
You tried running a program with an upper segment. The
program was loaded into core, but there is no room in the
monitor's job tables to make an entry for the upper
segment. The monitor will try to simulate an upper segment
for you by leaving the upper segment code in your lower
segment, but simulating upper-segment relocation by the
SETPR2 UUO mechanism. This ought to work ok for most
two-segment programs, but just in case it doesn't the
monitor types this warning. If you are writing a
two-segment program, consult the UUO Manual or a system
programmer for advice.
COULDN'T UNPURIFY UPPER. CONTINUE TO TRY ANYWAY.
You typed a DDT command. JOBDDT in your core image points
to an address in your upper segment as the DDT starting
address, and your upper segment is write protected. DDT
and RAID both contain instructions which modify themselves.
The monitor tries to solve this by unprotecting your upper
segment. If you are sharing the segment with other users,
it has to load a new copy for you so the other users still
have a protected one. This might fail, for example,
because there are no job slots available. All highly
unlikely.
<dev> DEASSIGNED, BUT STILL INITED!
You gave a DEASSIGN command for a device which is in use by
your program. This is all OK; the monitor is merely
reminding you that you still control the device. The
FINISH command will release it, if that is what you want.
DEVICE <dev> NOT AVAILABLE
The device specified in a RUN, R, GET, SAVE, or SSAVE
command was unavailable to your job.
DEVICE <dev> OK?
The device is somehow disabled. If it's a mag tape, it may
be in LOCAL mode. The line printer could be out of paper.
You can fix the problem and type CONTINUE.
DISK IS FULL!
Your program is trying to write a file on the disk, and
there is no room. If you delete some files (using another
job!), you can type CONTINUE and the file will be written.
Appendix 11 137
DISK TRANSMISSION ERROR
This is a disk failure. See a system programmer.
ENTER FAILED
The filename you typed to ENTER NEEDED (see below) didn't
work. Most likely this is a protection failure.
ENTER FAILED!
The file specified in a SAVE or SSAVE command cannot be
written. This probably means that the file already exists
and is write protected.
ENTER NEEDED. PLEASE TYPE FILE NAME.
Your program tried to write on the disk or a DECtape
without doing an ENTER UUO to specify the filename. You
are given the opportunity to specify the file to be used.
ERROR IN DSKSER
Horrible error in the monitor disk service routine. See a
system programmer.
ERROR IN JOB <job number>
This message will appear along with one of the others. The
only reason you might need it is if you are running more
than one job at once (through a PTY, for example).
ERROR IN MONITOR
This message is usually followed closely by a system crash.
Call a systems programmer.
FILE ALREADY EXISTS. DELETE?
The filename you typed in response to ENTER NEEDED (see
above) already exists. If you type Y (and RETURN), it will
be replaced with the new output; otherwise, you are asked
for another name.
FINISH WHAT?
You typed a FINISH command with an argument and weren't
using that device (or there is no such device).
GOTCHA!
Appendix 11 138
This is not an error. You get it when you are in a device
wait queue and your turn for the device comes.
HALT AT USER <address>
Your program executed a JRST 4, instruction. You are
allowed to CONTINUE the job after this message. The
address typed is the address containing the HALT
instruction, not its effective address.
HUNG DEVICE <dev>
The device did not respond properly to your attempt to use
it in some predetermined time. This probably means that
the device is unusable for some hardware reason.
HUNG DEVICE: PDP-6
Your program is trying to run a spacewar module on the
PDP-6, which is not responding. Get a system programmer to
fix it.
I-LEVEL TIME-OUT
Your program's user interrupt routine has run longer than
the maximum time allowed. (No other user can run while an
interrupt routine is in progress, which is why they are
limited in time. See the UUO Manual about interrupts.)
I-LEVEL UUO GIVEN WHEN NOT AT I-LEVEL
Your program tried to execute a UUO which is only allowed
in a user interrupt routine, when it was not servicing an
interrupt.
ILL INST. AT USER <address>
Your program executed an undefined instruction or one which
is not allowed in user mode.
ILL MEM REF AT USER <address>
Your program tried to read or write an address greater than
the size of its core image. The offending instruction is
at the address typed.
ILLEGAL ATTACH LOOP
Your program is typing into a pseudo-teletype and gave an
Appendix 11 139
ATTACH command trying to attach its controlling job. In
particular, people using the system via the ARPA network
get this if they try to attach to their TELNET server job.
(You also get it if you try to attach the job controlling
the PTY controlling the job controlling you, etc.) Typed
on the PTY.
ILLEGAL DATA MODE FOR DEVICE <dev>
Your program has tried to use an I/O device in an undefined
way, e.g., binary I/O to a terminal. The UUO Manual
discusses data modes for each device.
ILLEGAL DD CHANNEL.
Your program is trying to use a Data Disc channel to which
it is not allowed access.
ILLEGAL FORMAT DUMP MODE COMMAND LIST
Your program is trying to do dump mode I/O incorrectly.
See the UUO Manual.
ILLEGAL INSTR. ADDRESS.
This message refers to instructions in a display program
your job is running.
ILLEGAL PAGE SIZE SPEC.
Your program is trying to adjust the page printer geometry
incorrectly on a display terminal.
ILLEGAL PIECE OF PAPER
Your program gave a PPIOT UUO which specified a piece of
paper number greater than 17 (octal). See the UUO Manual.
ILLEGAL UUO AT USER <address>
Your program executed a UUO which the monitor does not
recognize. (Probably you are trying to execute data.)
IMP IS DOWN
You are trying to use the ARPA network, and the IMP has
been declared dead by the monitor. This may be a real IMP
failure or only a temporary problem which can be fixed.
Ask a system programmer.
Appendix 11 140
INPUT DEVICE <dev> CANNOT DO OUTPUT
Your program has done something silly like trying to write
on the paper tape reader.
INPUT DEVICE <dev> HAS NO INPUT BUFFER HEADER, UUO AT USER <address>
Your program executed an input UUO in buffered mode, and
had not provided an input buffer header when it opened the
device.
IN USE.
You gave the FLUSH command and the specified terminal is in
use.
INTERRUPT ADDRESS OUT OF BOUNDS
Your program has enabled user interrupts and specified an
interrupt address which is not in your core image.
IO TO UNASIGNED CHANNEL AT USER <address>
Your program executed an I/O UUO specifying an I/O channel
which was not opened. See the UUO Manual about channels
and I/O.
<dev> IS BUSY, WILL YOU WAIT?
Your program tried to open a device which another job is
using. If you say Y (then RETURN), your job is placed in a
queue of jobs waiting for the device, and will be continued
automatically when it's your turn. If you say N, you are
then asked DIRECT IO TO DISK? and can again say Y or N. If
you say Y, you may be asked for a filename (if your program
does input or output on that channel without specifying a
name). If you say N again, your program gets a failure
return on the INIT or OPEN UUO.
JMS NOT LEGAL; USE JSR.
Your program set up a III display program with the
forbidden JMS instruction in it. See the UUO Manual.
JOB CAPACITY EXCEEDED
The maximum allowable number of users are already logged
in. Try again later.
<n>K OF CORE NEEDED
Appendix 11 141
The maximum amount of core storage available to user jobs
is not enough for the core image you are trying to run.
The number in the message is the decimal number of
1024-word blocks needed for the program. (Note: if you
give a RUN or GET with a core size argument which is too
big, the message will tell you the minimum amount of core
necessary to fit the dump file, not the amount you asked
for. The amount in the message might well fit even though
what you asked for didn't.)
LOGICAL NAME ALREADY IN USE, DEVICE <dev> ASSIGNED
You typed an ASSIGN command with a logical device name
argument which you were already using for another device.
The device you requested is assigned to your job, but the
logical name still refers to the old device.
LOGIN PLEASE
You typed a command which requires that you log in first.
LOOKUP FAILED
The filename you typed in response to LOOKUP NEEDED (see
below) could not be read. (It doesn't exist or is read
protected against you.) You get to type in another name.
LOOKUP NEEDED. PLEASE TYPE FILE NAME.
Your program tried to read from the disk or a DECtape
without specifying a file by executing a LOOKUP UUO. You
are given the chance to specify the file to read.
NEED ENTER BEFORE OUTPUT
NEED LOOKUP BEFORE INPUT
You get these messages if your program opens a directory
device, closes a file, and then tries to do input or output
on that channel without another LOOKUP or ENTER.
NO CORE ASSIGNED
You typed a command which refers to your core image (e.g.,
DE or START), and you don't have a core image.
NO DDT
You typed a DDT command, and your core image does not
contain DDT or RAID (JOBDDT zero).
Appendix 11 142
NO REENTER ADDRESS
You gave a REENTER command and your program has no REENTER
address (JOBREN is zero).
NO STARTUP ADDRESS!
You gave a START command and your program has no start
address (JOBSA zero).
NO SUCH DEVICE
You typed something the monitor did not recognize when a
device name was required.
NO SUCH JOB
You gave an ATTACH command with a nonexistent job number.
NON-EX JOB NAME OR NUMBER
Your program gave a MAIL UUO addressed to a nonexistent
job.
NON EX MEM AT USER <address>
This can't happen, it says here. It means that your
program tried to address a word of core storage which does
not exist. However, we have the maximum possible amount of
core, so there shouldn't be any nonexistent addresses.
Possibly a hardware failure could cause this. (If you are
running a spacewar module which resets its relocation and
protection registers when for some reason we are running
with less than the full amount of core, you can get this
legitimately.)
NOT A DUMP FILE
The file specified in a RUN, R, or GET command is not in
dump file format.
NOT A TTY.
You gave the FLUSH command with an argument which is not
the name of a terminal.
NOT ENOUGH CORE!
You typed a CORE command with an argument greater than the
maximum core available to a user job.
Appendix 11 143
<filename> NOT FOUND
The file specified in a RUN, R, or GET command was not
found. If the problem is not a spelling error, make sure
you are not aliased.
OUT OF BOUNDS
Some numeric argument to a monitor command wasn't right.
This could be an address not in your core image in a DE or
E command, or an invalid job number in a KILL command.
OUTPUT DEVICE <dev> CANNOT DO INPUT
Your program has tried to do something silly like read the
line printer.
OUTPUT DEVICE <dev> HAS NO OUTPUT BUFFER HEADER, UUO AT USER
<address>
Your program executed an output UUO in buffered mode and
did not provide a buffer header when it opened the device.
PARITY ERROR IN YOUR CORE IMAGE. LOC = <address>
PARITY ERROR IN YOUR UPPER SEGMENT. LOC = <address>
A hardware failure has invalidated the contents of the
indicated address in your core image. The safest thing to
do in this case is to restart with a fresh copy of your
program. If you were running for a long time and are
willing to risk continuing, you can type CONTINUE. You can
also try to fix the bad location with DDT or RAID, if
present, or with the DE and E commands.
PC EXCEEDS MEM BOUND AT USER <address>
Your program tried to jump to an address outside the range
of your core image. The message, unfortunately, tells you
the illegal address rather than the address of the jump
instruction.
PDL OV AT USER <address>
Your program had a pushdown list overflow. The address
typed is the effective address of a PUSHJ, the return
address for POPJ, or the address following a PUSH or POP.
Appendix 11 144
PIECE OF GLASS TOO BIG
Your program is trying to run a display program which is
too big for the monitor to handle. Sorry.
PLEASE KJOB OR DETACH
You gave a LOGIN command when you were already logged in.
PLEASE TYPE ↑C FIRST
You started your program with CSTART or CCONTINUE, leaving
your terminal in monitor mode, and then typed a command
which affects your core image. Such commands cannot be
processed while the program is running. Type CALL and try
again.
PROJECT-PROGRAMMER NUMBER MISMATCH
You typed an ATTACH command, and the job number and PPN
arguments did not agree.
RESET CALLED FROM I-LEVEL, OR SPACEWAR LEVEL
Your job's user interrupt routine or spacewar module
executed a RESET UUO.
SAVE/GET IO ERROR
Try again. If it still fails, ask a wizard for help.
SORRY, NO <dev>'S AVAILABLE
You typed an ASSIGN command with a generic device name
(e.g., MTA), and all of them are in use.
SPACEWAR LOSSAGE - <error>
The error indicated can be ILL MEM REF, PC EXCEEDS MEM
BOUNDS, NON EX MEM, PDL OV, or CONS TRAP. It means that
your job started a spacewar module (see the UUO Manual),
which caused the error. See the particular error message
in this list for an explanation.
SWAP CALLED FROM I-LEVEL
Your job's user interrupt routine executed a SWAP UUO.
Appendix 11 145
SWAP READ ERROR
Your job was swapped out of core, and when the monitor
tried to read it back in, there was a hardware error on the
swapping disk. Your core image is probably gone forever.
If you really need it badly, you might be able to persuade
a system programmer to try to recover it for you, but even
then there's not much chance. Start over.
THIS FORM OF MTAPE IS NO LONGER SUPPORTED!
You are trying to run an old program which uses old-style
disk MTAPE UUOs. See the UUO Manual for the new disk
MTAPEs.
TOO FEW ARGUMENTS
This error message can be typed by several different
monitor commands and should be self-explanatory.
TOTAL DPY BUFFER SPACE EXCEEDED.
Your program is trying to run a III display program, and
there is no more room in your allocation of display buffer
space.
$$ USER DPY ERROR AT <address>
This message comes along with another which explains the
error in your display program. The address is that of the
offending instruction.
USER I-LEVEL <error>
The error can be ILL. MEM. REF., NON-EX. MEM., or PDL OV.
See the associated message in this list for an explanation.
The error happened in your program's interrupt routine. If
it says CH3 ERROR instead of one of the above, see a system
programmer.
UUO AT USER <address>
This line appears with certain other messages. It tells
you the location in your core image of the instruction
which caused the error.
Appendix 11 146
<dev> WASN'T ASSIGNED
You gave a DEASSIGN or REASSIGN command and hadn't assigned
the device.
WASN'T DET
You gave the privileged ATTACH <device> command and have
the privilege, but the device wasn't detached.
YOU ARE LOCKED OUT OF CORE!
The amount of user core available has been reduced by other
jobs starting spacewar modules (thereby being locked in
core). There is not enough room to fit your core image.
This condition may fix itself quickly; the message does not
return you to monitor mode, but will keep appearing every
so often until you fit again. If you have a really huge
program, run it late at night.
Appendix 12 147
APPENDIX 12
BIBLIOGRAPHY
This appendix lists various other sources of information about system
programs. Some of these are available on the disk, some are printed.
Some programs, which were not written here but came from DEC, are
documented in DEC manuals. Other programs, documented on the disk,
are not included here; only the major processors are listed. The
files AIMS[BIB,DOC], AIMS.OLD[BIB,DOC], SAILON[BIB,DOC], and
PRUNE.DAT[UP,DOC] list other program documentation which may be of
interest. A convention used in naming [S,DOC] and [UP,DOC] files is
that the filename is the name of the program being documented, and
the extension is the programmer name of the author.
SAILONs (Stanford Artificial Intelligence Laboratory Operating Notes)
and AIMs (Artificial Intelligence Memos) are generally available in
printed form from the project secretaries. Try this before making
your own listing.
EDITORS:
TV: TVED.DCS[UP,DOC] is the reference manual for the TV editor.
E: TV2E.FW[UP,DOC] describes the differences between E and TV.
Read TVED.DCS also.
SOS: SOS.LES[S,DOC], SAILON 50.3, is the reference manual for SOS.
TECO: This is a DEC program. See the DECsystem 10 Users Handbook.
LANGUAGE PROCESSORS:
FAIL: FAIL.PMP[S,DOC], SAILON 26.2, is the reference manual.
(A new manual is in preparation.)
SAIL: SAIL.KVL[AIM,DOC], AIM 204. This is a long manual; try to get
the printed version instead of spooling a copy.
MACRO: This is a DEC program. See the DECsystem 10
Assembly Language Handbook.
F4: This is the DEC FORTRAN. See the DECsystem 10
Mathematical Languages Handbook.
LISP: Our version of LISP, LISP 1.6, is described in
LISP.WD[S,DOC], SAILON 28.7.
PUB: PUBNET.TES[S,DOC], SAILON 70, describes the
PUB Document Compiler.
DEBUGGERS:
RAID: The display terminal debugger is described in
Appendix 12 148
RAID.PMP[S,DOC], SAILON 58.1.
DDT: The Teletype debugger is a DEC program; see the DECsystem 10
Assembly Language Handbook.
Appendix 13 149
APPENDIX 13
STANFORD CHARACTER SET
The Stanford ASCII character set is displayed in the following table.
The three digit octal code for a character is composed of the number
at the left of its row plus the digit at the top of its column. For
example, the code for "A" is 100+1 or 101.
0 1 2 3 4 5 6 7
000 NUL ↓ α β ∧ ¬ ε π
010 λ TAB LF VT FF CR ∞ ∂
020 ⊂ ⊃ ∩ ∪ ∀ ∃ ⊗ ↔
030 _ → ~ ≠ ≤ ≥ ≡ ∨
040 SP ! " # $ % & '
050 ( ) * + , - . /
060 0 1 2 3 4 5 6 7
070 8 9 : ; < = > ?
100 @ A B C D E F G
110 H I J K L M N O
120 P Q R S T U V W
130 X Y Z [ \ ] ↑ ←
140 ` a b c d e f g
150 h i j k l m n o
160 p q r s t u v w
170 x y z { | ALT } BS
The tables below display the standard ASCII codes, and the SOS
representation used at Stanford for entering the full Stanford ASCII
character set from Teletypes or similar terminals with restricted
character sets. The obscure names for the ASCII codes below 40 are
listed just for confusion. Notes: "DEL" (177) is the ASCII delete.
"ESC" (33) is their alt mode. The SOS representation is so called
because it is provided by SOS, the Teletype editor. Certain other
programs also know about this representation, but it is not built
into the monitor in any way.
Appendix 13 150
Standard ASCII
0 1 2 3 4 5 6 7
000 NUL SOH STX ETX EOT ENQ ACK BEL
010 BS TAB LF VT FF CR SO SI
020 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
030 CAN EM SUB ESC FS GS RS US
040 SP ! " # $ % & '
050 ( ) * + , - . /
060 0 1 2 3 4 5 6 7
070 8 9 : ; < = > ?
100 @ A B C D E F G
110 H I J K L M N O
120 P Q R S T U V W
130 X Y Z [ \ ] ↑ ←
140 ` a b c d e f g
150 h i j k l m n o
160 p q r s t u v w
170 x y z { | } ~ DEL
SOS Representation
0 1 2 3 4 5 6 7
000 --- ?! ?" ?# ?$ ?% ?& ?'
010 ?( TAB LF VT FF CR ?) ?*
020 ?+ ?, ?- ?. ?/ ?0 ?1 ?2
030 ?9 ?6 ?3 ?= ?< ?> ?7 ?8
040 SP ! " # $ % & '
050 ( ) * + , - . /
060 0 1 2 3 4 5 6 7
070 8 9 : ; < = > ??
100 @ A B C D E F G
110 H I J K L M N O
120 P Q R S T U V W
130 X Y Z [ \ ] ↑ ←
140 ?@ ?A ?B ?C ?D ?E ?F ?G
150 ?H ?I ?J ?K ?L ?M ?N ?O
160 ?P ?Q ?R ?S ?T ?U ?V ?W
170 ?X ?Y ?Z ?[ ?: ALT ?] BS
INDEX 151
abbreviations for monitor BREAK D 26
commands 7 BREAK F 20, 38
activation 18 BREAK H 25
activation character 16, 21 BREAK key 16
AD device 9 BREAK N 25, 26
add channel 26 BREAK O 20
add piece of glass 26 BREAK P 25
addresses, core 3, 12 BREAK Q 21
ADVANCE command 103, 104 BREAK S 26
ALGOL 3 BREAK T 26
alias 22, 23, 34, 36, 38, 42, BREAK U 27
50, 52, 57 BREAK W 21
ALIAS (in WHO line) 22 BREAK X 23, 38
ALIAS command 38 BS 17
ALT 19, 29, 53 BS key 15
ALT key 15 CALCOMP 9
alt mode 15, 149 CALL 20, 23, 28, 32, 33, 38
ALT MODE, Teletype 29 CALL key 16
analog-to-digital 9 call, deferred 20
APE 42 cameras, TV 25
arguments 7 CANCEL command 98
ARPA network 10, 29, 53, 113 carriage return 15, 19, 29, 38,
ASCII 15, 115, 149 41
ASCII switch in COPY 77 CCONTINUE command 33
ASK switch in COPY 77 CDETACH command 34
ASK switch in SPOOL 87 CETV command 12
assembly language 3 CETV files 56
ASSIGN command 8, 34 CFORK command 34
assistance 38 channel number 26
Associated Press 41, 99 channels, Data Disc 5, 22, 25,
ATTACH command 33, 43, 54 36, 54
AUDIO (LOGIN option) 41 channels, private 25
audio switch 27, 41 channels, public 25, 41
authorized users 10 character set 5, 15, 149
backspace 15 character set, full 20
BACKSPACE command 103, 104 CLEAR 18
backspace, deleting 17, 18 CLEAR key 16
backspace, non-deleting 17 clear line editor 18
bams 106 CMD files 56
bibliography 147 CMQ (job queue) 23
BINARY switch in COPY 77 code, character 15, 149
binary, relocatable see command decoder 7, 16
relocatable binary command files 46
BLOCKED switch in COPY 77 commands, monitor 7
blocks 14, 22, 30, 31, 49 COMPILE command 13, 57
BMAR switch in XSPOOL 90 COMPILE files 57
BREAK 20 COMPILE switch in RPG 59
BREAK 1 X 24, 38 compiling programs 12
BREAK A 26 continuable 32
BREAK C 25 CONTINUE command 23, 32
INDEX 152
CONTROL 19, 46 DDT command 32
CONTROL key 15, 115 DDT, Executive 54
CONTROL key, Teletype 28 DE (deposit) command 32
CONTROL-B, Teletype 28 DEASSIGN command 35
CONTROL-BREAK 20, 24 DEBUG command 59
CONTROL-BS 17 debugging program see DDT or
CONTROL-C, Teletype 28 RAID
CONTROL-CALL 20 DECtape 8, 9, 23, 47, 126
CONTROL-CLEAR 21, 25 Defense, Department of 113
CONTROL-D 17 deferred call 20
CONTROL-FORM 17 delete 15, 149
CONTROL-I 17 delete channel 26
CONTROL-I, Teletype 29 DELETE command 44, 82
CONTROL-K 17 delete piece of glass 26
CONTROL-K, Teletype 29 DELETE switch in SPOOL 87
CONTROL-L, Teletype 29 delete to left 17
CONTROL-META-LINE 20 delete to right 17
CONTROL-number 18 DENSITY switch in COPY 77
CONTROL-O, Teletype 28 deposit in core see DE
CONTROL-RETURN 18 DET (in WHO display) 49
CONTROL-S 17 DET (in WHO line) 22
CONTROL-SPACE 17 DETACH command 33, 54
CONTROL-TAB 17 detached jobs 22, 33, 46, 49
CONTROL-U, Teletype 28 DEV privilege 54
CONTROL-Z, Teletype 29 device 34, 36, 125
CONVERT switch in COPY 77 device name 8, 54
COPY 40, 44, 48, 52, 71 device name, logical 8, 34
COPY command 44 device name, physical 8, 10,
core see storage, core 34, 35
CORE command 31 device names, list of 10
core image 3, 7, 12, 14, 22, DIGEST (LOGIN option) 41, 42
23, 30, 31, 39, 49 digital-to-analog 9
CREATE command 56 DIOW (job queue) 23
CREF command 68 directories 9
CREF switch in RPG 59, 62 DIRECTORY command 44, 82
CSTART command 33 directory device 8, 35
CTRL key, Teletype 28 directory, telephone 50
CTV command 11, 56 disk 8, 9, 22, 31, 35, 36, 38,
CTY device 9, 38 45, 46, 47
cursors 5, 16 disk PPN see alias
DART 46, 81, 103 display see terminals, display
data 8 DMP 30
Data Discs 5, 16, 21, 24, 25 DMP files 9, 12, 59
DATE (in WHO line) 22 DO 66
DAY (in WHO line) 22 DO command 46
DAY.TXT (COPY filehack) 73 DOC files 57
DAYTIME command 7, 36 documentation, program 4, 147
DCQ (job queue) 23 DSK device see disk
DD (in WHO line) 22 DSKOPS (in WHO line) 22
DDT 31, 32, 55, 59, 64, 148 DSKQ (in WHO line) 22
INDEX 153
DSPOOL switch in COPY 77 extension 9, 30
DTA device see DECtape extensions, standard 9
DTQ (job queue) 23 EXTRA switch in COPY 77
DUMP command 103, 105 EXTRA switch in SPOOL 87
dump file see DMP files F4 55, 147
DUMP switch in COPY 77 F4 files 56, 58
DUMP switch in RPG 59, 64 FACT.TXT file 85
DUMP switch in SPOOL 87 FAI files 56, 58
DWQ (job queue) 23 FAIL 3, 55, 58, 147
E 11, 16, 20, 55, 147 FAIL switch in RPG 59
E (examine) command 32 FAST (LOGOUT option) 43
ECHO (in TTY command) 38 FAST switch in COPY 78
EDDT command 54 FF switch in SPOOL 87
EDIT command 56 file directory see DIRECTORY
editing 11 file storage 8
editor, display 11, 56 File Transfer Protocol 53, 113,
editor, line see line editor 118
end of file 20, 29 filenames 8
EOT command 103, 104 FILES command 37
error messages 133 files, disk 9, 23
ESC 20 FILL (in TTY command) 38
ESC 1 X 23, 38 FILL (LOGIN option) 41
ESC A 26 FIND command 50
ESC C 25 FINGER command 13, 52
ESC D 26 FINISH command 35
ESC E 25 FIXIMLAC command 53, 112
ESC F 20, 38 FLUSH command 35
ESC G 24 FONT switch in COPY 78
ESC H 25 FONT switch in XSPOOL 90
ESC I 21 FOONLY switch in COPY 78
ESC J 25 FORK command 34
ESC key 16 form feed 15, 29, 73
ESC L 24 FORM key 15
ESC N 25, 26 FORTRAN 55, 58, 147
ESC O 20 FORTRAN switch in RPG 59
ESC P 25 FORTRAN switch in SPOOL 87
ESC Q 21 fortune cookie 41
ESC R 25 FORWARD switch in RPG 59
ESC S 26 FTP 118
ESC T 26 FTP command 53, 113, 118
ESC U 27 FUDGE2 65
ESC W 21, 34 FULL (in TTY command) 38
ESC X 23, 38 FULL (LOGIN option) 41
ESC Y 24 full character set mode 20, 41
ESCAPE, Teletype 29 FULL switch in COPY 78
ETV command 12 GET command 31
ETV files 56 glass, pieces of 24, 26
EVEN switch in COPY 77 glitch 24
examine core see E graphics 5, 24
EXECUTE command 13, 58 GRIPE command 92
INDEX 154
GTOTAL switch in COPY 78 KILL command 38, 54
HALT command 33 KILL switch in COPY 79
HEADER switch in COPY 78 kill to character 17
HEADING switch in SPOOL 87 kilo-core-seconds 36
HELLO command 37 KJOB command 10, 42
HELP command 13, 44, 52, 82 KLOG command 43
HOLD switch in SPOOL 87 languages, programming 3, 147
holding, automatic 20, 24 LATER command 98
I/O see device left cursor 16
IGNI switch in COPY 79 letters, lower case 7, 9, 20,
IGNO switch in COPY 79 28, 38
IIIs 5, 16, 24, 26 LIBRARY switch in RPG 59, 65
IMLAC 53 LINE see line feed
IMP 113 LINE (in WHO display) 49
INCREMENT (in TIME command) 36 line editor 5, 15, 16, 18, 21,
information, system 4, 13, 35, 25
48 line feed 15, 19, 29
input buffer 7, 18, 19, 20, 38, LINE key 15
46 line number, terminal 26, 36,
insert characters 17 49
insert mode 17 line numbers, SOS 11, 77, 79,
Interface Message Processor 113 87
interrupt 16 line printer see printer, line
Introduction for New Users 1 LINK 114
Introduction to Terminals 5 LISP 3, 47, 147
INTW (job queue) 23 LISP command 53
IOWQ 23, 33 LIST command 44, 82
IOWQ (job queue) 23 LIST switch in COPY 79
JBS (in WHO line) 22 LIST switch in RPG 59, 62
JLOG 48 LMAR switch in XSPOOL 90
JOB (in WHO display) 49 LOAD command 13, 58
JOB (in WHO line) 22 LOADER 31, 32, 55, 59
Job Data Area 14, 31, 32 LOADER switches 68
job name 30, 49, 52 loading programs 12
job number 3, 8, 10, 33, 35, LOCATE command 103, 104
36, 38, 49, 52 LOCK 23
JOBDDT 31, 32 LOGGER 114
JOBFF 31 logical device name see device
JOBNAM (in WHO display) 49 name, logical
JOBNAM (in WHO line) 22 LOGIN command 3, 7, 10, 39
JOBPC 32 login, automatic 7
JOBRD 23 LOGOUT 11, 12, 42, 56
JOBREN 32 LOGOUT command 43
jobs 22 LOGRUN 42
JOBSA 14, 32, 33 LOGRUN (LOGIN option) 41
KATTACH command 43 lower segment 14
KCS (in TIME command) 36 LPT device see printer, line
keyboard scanner 16, 20 LPT0 switch in SPOOL 87
keyboards 15 LPT100 switch in SPOOL 87
KIL privilege 54 LST files 56
INDEX 155
MAC files 56, 58 NONUMBERS switch in COPY 79
MACRO 55, 58, 147 normal activation mode 18
MACRO switch in RPG 59 NOSAISEG switch in RPG 60
magnetic tape 8, 9, 23, 30, 34, NOSEARCH switch in RPG 65
46, 126 NOTICE.TXT (COPY filehack) 73
MAIL 41, 45, 92 NOTICE.TXT file 39, 93, 99
MAIL (COPY filehack) 73 NOTITLE switch in SPOOL 87
MAIL command 39 NOWARN switch in SPOOL 87
MAINT.TXT (COPY filehack) 73 NSA files 56, 58
maintenance forecast 73 NSAIL 55, 58
maintenance mode 40 NSAIL switch in RPG 60
MAKE command 56 null job 36, 49
MAP switch in RPG 60, 64 null-time 22
ME (LOGIN option) 41 NULQ (job queue) 23
ME (LOGOUT option) 43 NUMBER switch in SPOOL 87
MESSAG (LOGIN option) 41 number, line see line number
messages, system 10, 39 OCTAL switch in SPOOL 87
META 17, 18, 19, 46 ODD switch in COPY 79
META key 15 operator 38
META-BS 17 OPTIMIZE switch in COPY 79
META-CALL 20 OPTION.TXT 102
MICRO-PLANNER 3 OPTION.TXT (COPY filehack) 73
MLENGTH switch in COPY 79 OPTION.TXT file 39, 40, 42, 95
MODE switch in SPOOL 87 OSA files 56, 58
monitor mode 7, 11, 16, 20, 31, OSAIL 55, 58
32, 33, 38 OSAIL switch in RPG 60
move left 17 output buffer 20
move right 17 page printer 24, 25, 26, 50
move to beginning 17 paging, telephone 27
move to end 17 paper tape 9
MSG (COPY filehack) 73 paper, pieces of 24
MSG files 94 password 39, 48
MTA device see magnetic tape password, remote users 40
MTQ (job queue) 23 PDP-10 1, 3, 15, 23, 49
NAP (COPY filehack) 73 PDP-10 console 9, 38, 54
NARROW switch in SPOOL 87 PDP-6 23, 49
NCP 113 phantom 48
NL (in WHO line) 22 physical device name see
NOCOPY switch in SPOOL 87 device name, physical
NODELETE switch in SPOOL 87 pieces of glass 24
NODUMP switch in RPG 60, 64 pieces of paper 24
NODUMP switch in SPOOL 87 PJOB command 36
NOFF switch in SPOOL 87 PL (in WHO display) 49
NOFORTRAN switch in SPOOL 87 plotter 9
NOHEADING switch in SPOOL 87 PMAR switch in XSPOOL 90
NOLOAD switch in RPG 60 PORNO (LOGIN option) 41
NOMAIL (LOGIN option) 41, 42 PPN 4, 9, 10, 23, 33, 36, 38,
NONARROW switch in SPOOL 87 39, 41, 42, 52, 54
NONSTANDARD switch in RPG 60 PPN (in WHO display) 49
NONUMBER switch in SPOOL 87 PPN (in WHO line) 22
INDEX 156
PPN, disk see alias REL switch in RPG 60
PPPN command 36 reloading 132
PREFIX, Teletype 29 relocatable binary 9, 12
PREPARE command 58 REMIND command 96
PRINT command 44, 82 remote terminal 29, 40
printer, line 8, 9, 34, 45, 82, RENAME command 44, 82
85, 125 RENAME switch in COPY 80
privileged commands 54 REPEAT switch in SPOOL 87
programmer name 3, 21, 38, 41, request for connection 114
45, 50, 52 request for new message 114
programs, display 24, 26 RESET 25, 26, 31
programs, system 4, 30, 39 RESOURCES command 36
programs, system information 7, RESTORE command 103, 105
13 retrieve last line 18
project name 4 RETURN see carriage return, 19
project-programmer name see RETURN key 15, 16
PPN REWIND command 103
PROTECTION switch in COPY 79 RFC 114
pseudo-teletype 10 RFNM 114
pseudo-teletypes 48 right cursor 16
PTP device 9 RMAR switch in XSPOOL 90
PTR device 9 RP (in WHO line) 22
PTTY command 36 RPG 12, 42, 43, 47, 55
PTY 10 RPG (COPY filehack) 73
PUB 53, 55, 147 RPGSAV (LOGOUT option) 43
PUB command 57 RSL command 52, 106
PUB files 56 RTIME 24
QQSVCM.RPG file 57 RUBOUT, Teletype 28
QQSVED.RPG file 57 RUN command 30
QSPOOL 91 run time 36, 49, 52
QSPOOL command 45 running programs 12, 30
queue 52 RUNQ (job queue) 23
QUEUE (in WHO display) 49 RUNTIME (in WHO line) 22
QUEUE (in WHO line) 22 runtime, incremental 22
queue names 22 SAI files 9, 56, 58
QUIET switch in COPY 80 SAIL 3, 55, 58, 147
R (in WHO line) 22 SAIL switch in RPG 60
R command 30, 39 SAVE command 31
RAID 31, 32, 55, 59, 64, 147 SAVE switch in COPY 80
Rapid Program Generator see scanner, keyboard see keyboard
RPG scanner
RCOR (in WHO line) 22 scrolling 24
RCV 99 SEARCH switch in COPY 80
RCV command 41 SEG (in WHO display) 49
REASSIGN command 35 segment, lower see lower
RECOPY switch in SPOOL 87 segment
records 9 segment, upper see upper
REENTER command 32 segment
refresh 25 segments 14
REL files 9, 58 SEGNAM (in WHO line) 22
INDEX 157
select audio channel 27 tape, magnetic see magnetic
select channel 26 tape
select piece of glass 26 tape, paper 8
SEND command 92 TCOR (in WHO line) 22
service level 37, 49, 52 TECO 11, 55, 56, 147
SETPR2 136 TECO command 56
SHIFT key, Teletype 28 Teletypes 5, 11, 28, 41, 48,
SHIFT keys 5, 15 53, 76
SHIFT LOCK key 5, 15, 20 TELNET 113, 115
shuffling 36 TELNET command 53, 113, 115
SIZE (in WHO display) 49 terminal 7, 9, 37
SIZE (in WHO line) 22 terminals, display 5, 15, 24,
skip to character 17 38, 48
SL (in WHO display) 49 tick 23, 49
SLEEP 23 TIME (in TTY command) 38
SLEVEL command 37 TIME (in WHO display) 49
SOCKET 114 TIME (in WHO line) 22
SOS 11, 55, 56, 147 TIME command 36
SOS representation 28 timesharing 1
Spacewar 4 TITLE switch in COPY 81
spacewar module 23, 49 TITLE switch in SPOOL 87
special activation mode 18 TLIST command 103, 104
SPOOL command 45, 85 TLK privilege 54
SPOOL switch in COPY 81 TMAR switch in XSPOOL 90
spoolers 45 TMPCOR 42, 56
SSAVE command 32 TN command 53, 113, 115
Stanford ASCII 15 TOP key 5, 15
Star Trek 26 TQ (job queue) 23
START command 32 TRANSFER command 44, 82
starting programs 32 TRY command 58
status, system 21 TTY (in WHO line) 22
STOP (job queue) 23 TTY command 37
stop typeout 20, 28 TTY device see terminal;
storage, core 3, 14, 22, 131 Teletypes
suspend typeout 20, 28 TTYUUO 29
SW10 (in WHO display) 49 TV 11, 55, 147
SW6 (in WHO display) 49 TV command 12, 56
switch, audio see audio switch TV device 9
switch, video see video switch TV, lounge 26, 27
SYS device 9, 31, 35 TYPE command 44, 82
SYSTAT command 52 typeahead 7
T 53, 113, 115 UCOR (in WHO line) 22
TAB 18, 29 UDP 47, 130
TAB key 15 UDP device 9
TABS (in TTY command) 38 UFD 9
TABS (LOGIN option) 41 UNHIDE (LOGIN option) 41
tabs, hardware 38 UNSPOOL 91
TALK command 38, 54 UNSPOOL command 45
talk ring 38 UPDATE (in TTY command) 38
INDEX 158
upper segment 14, 22, 23, 31,
49
user disk pack see UDP
User File Directory 9
user mode 7, 32, 54
user, authorized 10
UTPCLR 47
UUOs 2, 4, 18
vector 5
vertical position 24
vertical tab 15
video switch 25
VT 29
VT key 15
WAIT (in TIME command) 36
wait time 22
WARN switch in SPOOL 87
whams 106
WHERE command 13, 52
WHO (in TTY command) 38
WHO (LOGIN option) 41
WHO command 7, 13, 48
WHO line 21, 33, 35, 38, 41, 49
wizards 53
WRU files 56
XEROX command 53
Xerox Graphics Printer see XGP
XFACT.TXT file 85
XGP 9, 45, 85, 90, 127
XGP switch in XSPOOL 90
XGPLIST command 44, 82
XLINE switch in XSPOOL 90
XP (in WHO line) 22
XSPOOL command 45, 85, 90
XTIME 23, 38
XTIME (in TIME command) 36
XTIME (in WHO line) 22
ZERO command 47